[PS(Problem Solving)]/[프로그래머스]

    [프로그래머스] lv2 프로세스 / 파이썬, 고득점kit

    프로세스 주의점! 두 번째 예시에서 같은 숫자 1이 여러번 반복된다. 지정된 1을 기억하고 다른 1과 헷갈리지 않아야 한다 해결방법 0과 1로 이루어진 임시 리스트를 생성한다 def solution(priorities, location): answer, answer2 = [], [] tmp = [0] * len(priorities) tmp[location] = 1 while len(priorities) != 0: if max(priorities) != priorities[0]: priorities.append(priorities.pop(0)) tmp.append(tmp.pop(0)) elif max(priorities) == priorities[0]: answer.append(priorities.pop(..

    [프로그래머스] 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

    [프로그래머스] 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