[Coding Test]
[프로그래머스] lv2 기능개발 / 파이썬, 고득점kit
기능개발 "뒤에 있는 기능이 앞에 있는 기능보다 먼저 개발될 수 있고, 이때 뒤에 있는 기능은 앞에 있는 기능이 배포될 때 같이 배포됩니다." 이 부분을 읽고 스택이 아닌 큐라고 생각했다. 그래서 deque()를 이용하는 문제인가 생각했지만 deque() 없이도 풀 수 있는 문제였다. 두 리스트를 합치는 zip함수를 사용하는 방법도 있지 않을까 생각했지만 그럴 필요 없이 풀 수 있는 문제였다. 주의점! 뒷 순서의 요소가 먼저 100 이상이 되어도 빠질 수 없다 해결방법 progresses와 speeds의 길이는 항상 같다. progresses의 길이만큼 반복해 주며 speeds를 각 요소에 맞게 추가한다 뒷 순서의 기능은 앞 순서의 기능이 100이상이 되면 출력될 수 없으므로 progresses[0]만 ..
[프로그래머스] lv2 올바른 괄호 / 파이썬, 고득점kit
올바른 괄호 주의점! '('와 ')'가 올바른 순서대로 들어오지 않는 경우가 있다. ')'가 먼저 들어올 수 있다 자료구조에서 스택의 개념을 이해하고 있어야 한다. 해결방법 stack의 역할을 해줄 리스트를 하나 생성한다 stack[-1]을 이용해 스택의 가장 상단의 요소를 파악한다 마지막 요소까지 다 받아준 후 stack리스트가 비어 있으면 True, 아니면 False를 출력한다 def solution(s): stack = [] for i in range(len(s)): if s[i] == '(': stack.append(s[i]) elif len(stack) != 0 and s[i] == ')' and stack[-1] == '(': stack.pop() elif len(stack) == 0 and ..
[프로그래머스] lv1 같은 숫자는 싫어 / 파이썬, 고득점kit
같은 숫자는 싫어 주의점! 입력된 arr에 맞는 순서대로 숫자를 리턴해야 한다 그래서 파이썬 set함수를 사용해서는 문제를 해결할 수 없다(set함수는 순서가 랜덤이니까) 해결방법 변수를 만들어 arr의 첫번째 원소 즉 arr[0]을 입력받는다 반복문을 돌리면서 다음 원소가 변수와 일치하지 않으면 answer에 추가, 변수 갱신 def solution(arr): answer = [] tmp = arr[0] answer.append(tmp) for i in range(1, len(arr)): if tmp != arr[i]: answer.append(arr[i]) tmp = arr[i] return answer
[프로그래머스] lv3 베스트앨범 / 파이썬, 고득점kit
베스트앨범 쌩 노가다 한 틀린 코드 def solution(genres, plays): answer = [] dict = {} tmp, tmp2 = [], [] for i in range(len(genres)): tmp.append( [genres[i], plays[i] ]) for ge, pl in tmp: if ge not in dict: dict[ge] = pl else: dict[ge] += pl max1_genres = max(dict, key=dict.get) del dict[max1_genres] max2_genres = max(dict, key=dict.get) for idx, i in enumerate(tmp): if i[0] == max1_genres: tmp2.append([idx, ..
[프로그래머스] lv2 의상 / 파이썬, 고득점kit
의상 이전에 백준에서 똑같은 문제를 풀었다. 9375번: 패션왕 신해빈 def solution(clothes): answer = 1 dict = {} for name, type in clothes: if type not in dict: dict[type] = 1 else: dict[type] += 1 for key, value in dict.items(): answer *= (value+1) return answer-1
[프로그래머스] lv2 전화번호 목록 / 파이썬, 고득점kit
전화번호 목록 주의점!매개변수 phone_book은 문자열로 주어집니다.같은 번호가 중복해서 들어있지 않는다.해결방법!파이썬의 문자열 정렬을 이용한다.파이썬의 리스트 슬라이싱을 이용한다. def solution(phone_book): answer = True phone_book.sort() for i in range(len(phone_book)-1): if phone_book[i] == phone_book[i+1][:len(phone_book[i])]: answer = False return answer return answer 파이썬의 리스트 슬라이싱을 이용하면 index out of range를 받지 않고 해결할 수 있다. 반복..