Algorithm/Programmers 29

[프로그래머스]_Level 1_같은 숫자는 싫어_파이썬

2021.09.11 def solution(arr): return [num for i, num in enumerate(arr) if arr[i] != arr[i-1] or i == 0] 빈 list answer의 마지막 값[-1:]과 arr의 값[i]을 순서대로 비교하면서 중복되지 않는 값을 answer에 넣는다. arr = [1,1,3,3,0,1,1] answer = [] for i in arr: if answer[-1:] != [i]: answer.append(i) print(answer) # [1, 3, 0, 1] 위의 식을 한 줄로 적으면 아래와 같이 작성할 수 있는데, 한 줄로 적은 list내부에 자기 자신을 적으면 정상적으로 작동하지 않는다. answer = [i for i in arr if ..

[프로그래머스]_Level 1_나누어 떨어지는 숫자 배열_파이썬

2021.09.10 def solution(arr, divisor): return [i for i in sorted(arr) if i % divisor == 0] or [-1] 우선 divisor로 나누어 떨어지는 arr의 요소만 list로 만든다. arr = [2, 36, 1, 3] divisor = 1 arr_divide = [i for i in sorted(arr) if i % divisor == 0] print(arr_divide) # [1, 2, 3, 36] 이때, 빈 list는 bool 자료형으로 나타냈을 때 False이다. print(bool([])) # False 따라서 아래와 같이 코드를 작성했다. def solution(arr, divisor): return [i for i in sor..

[프로그래머스]_Level 1_문자열 내 마음대로 정렬하기_파이썬

2021.09.10 def solution(strings, n): return sorted(sorted(strings), key = lambda x : x[n]) 백준 1181번 문제에서 사용했던 lambda함수를 썼다. lambda 익명함수, 함수를 생성할 때 사용하는 예약어로 def와 동일한 역할을 한다. 보통 함수를 한줄로 간결하게 만들 때 사용한다. # lambda 인자(words의 인자) : 표현식((글자수, 글자)) # key = 정렬을 목적으로 하는 함수를 값으로 넣음 words = ["sun", "bed", "car"] words.sort(key = lambda x : x[-1]) print(words) # ['bed', 'sun', 'car']​ def solution(strings, n..

[프로그래머스]_Level 1_문자열 다루기 기본_파이썬

2021.09.10 def solution(s): if not (len(s) == 4 or len(s) == 6): return False else: if not s.isdigit(): return False return True 받은 문자열의 길이를 if문을 통해 제한한다. word = 'python3' print(len(word)) # 7 if not (len(s) == 4 or len(s) == 6): return False isdigit()을 이용해 모든 문자열이 숫자로 구성되어있는지 확인한다. isdigit() 문자열 구성이 모두 숫자인지 확인하는 메서드 if not s.isdigit(): return False 위의 두 조건을 만족하면 True를 출력한다. def solution(s): if ..

[프로그래머스]_Level 1_서울에서 김서방 찾기_파이썬

2021.09.05 def solution(seoul): return f'김서방은 {seoul.index("Kim")}에 있다' index() index(x) 함수는 리스트에 x 값이 있으면 x의 위치 값을 돌려준다. f 문자열 포매팅 파이썬 3.6 버전부터는 f 문자열 포매팅 기능을 사용할 수 있다. format 함수를 사용한 포맷팅 def solution(seoul): return '김서방은 {}에 있다'.format(seoul.index("Kim"))

[프로그래머스]_Level 1_소수 찾기_파이썬

2021.09.05 def solution(n): answer = [i for i in range(2, n + 1)] for i in range(2, int(n ** 0.5) + 1): if i in answer: answer = list(set(answer) - set(range(i * 2, n + 1, i))) return len(answer) 백준 1929번에서 구현했던 에라토스어쩌구를 이용해서 소수 판별 후, 소수로 리스트를 만들어 개수를 세는 코드를 작성했다. 한 눈에 봐도 지저분하다. def solution(n): def is_prime(num): if num == 1: return False else: for i in range(2, int(num**0.5)+1): if num % i == ..

[프로그래머스]_Level 1_수박수박수박수박수박수?_파이썬

2021.09.05 def solution(n): answer = '수박' * (n // 2 + 1) return answer[:n] 처음 코드는 홀수번째는 '수'를 넣고 짝수번째는 '박'을 넣도록 코드를 짰다. def solution(n): answer = '' word_odd = '수' word_even = '박' for i in range(n): if i % 2 == 0: answer += word_odd else: answer += word_even return answer 뭔가.......썩 내키지 않아서 '수박'을 여러개 넣은 다음 자르는 것도 나쁘지 않을 것 같았다. def solution(n): answer = '수박' * n return answer[:n] n이 커지면 너무 쓸데없을 것 ..