본문 바로가기
728x90

분류 전체보기205

[python] 프로그래머스_신고 결과 받기 (구현) 문제 풀이 def solution(id_list, report, k): answer = [0]*len(id_list) report = list(set(report)) id = dict() ans_dict = dict() for i in range(len(id_list)): id[id_list[i]]=0 ans_dict[id_list[i]]=0 for i in report: a = i.split(' ')[0] b = i.split(' ')[1] id[b] +=1 for i in range(len(report)): a = report[i].split(' ')[0] b = report[i].split(' ')[1] if id[b] >= k: ans_dict[a] += 1 for i in range(len(id.. 2022. 2. 15.
[python] 프로그래머스_실패율 (정렬) 문제 풀이 우선 스테이지 번호와 실패율을 함께 저장할 딕셔너리 answer을 만든다. 스테이지를 정렬하고 스테이지에서 for문을 돌면서 각 인덱스를 카운트해서 0개이면 answer에 0을, 그렇지 않으면 answer에 실패율을 계산해서 넣고 유저수는 카운트했던 수는 빼준다. for문을 다 돌고 answer을 실패율에 따라 정렬해서 리턴해준다. def solution(N, stages): answer = {} stages.sort() numUser = len(stages) for i in range(1,N+1): cnt = stages.count(i) if cnt==0: answer[i]=0 else: answer[i]=(cnt/numUser) numUser=numUser-cnt answer = dict(.. 2022. 2. 15.
[python] 프로그래머스_프린터 (스택큐) 문제 풀이 큐에 우선 순위, index 순으로 저장하고 while 문을 돌면서 큐에서 하나씩 빼고 우선순위에 더 높은게 큐에 남아있으면 현재 값을 다시 큐에 집어넣는다. 그렇지 않은 경우에 result에 +1 하고 현재 index가 location과 동일하면 while 문 break하고 result를 리턴해준다. from collections import deque def solution(priorities, location): result = 0 d = deque([(v,i) for i,v in enumerate(priorities)]) # priority, index 순으로 que에 저장 while len(d): item = d.popleft() if d and max(d)[0] > item[0]: .. 2022. 2. 14.
[python] 프로그래머스_문자열 압축 (완전 탐색) 문제 풀이 입력으로 주어지는 문자가 1000 이하이기 때문에 완전탐색을 수행할 수 있다. 길이가 N인 문자열이 입력되면 1부터 N/2 까지의 모든 수를 단위로 하여 문자열을 압축하는 모든 방법을 확인하고, 가장 짧게 압축되는 길이를 출력하면 된다. 구체적인 방법은 step 사이즈로 문자열을 잘라서 prev에 저장해두고, 다음 위치를 step 사이즈로 자르고 prev와 똑같은지 비교하면서 진행한다. def solution(s): answer = len(s) # step을 1부터 문자열 길이 반까지 늘려가며 확인 for step in range(1, len(s)//2 +1): compressed = "" prev = s[0:step] # 앞에서 부터 step 만큼의 문자열 추출 count = 1 # step.. 2022. 2. 14.
[python] 프로그래머스_자물쇠와 열쇠 (완전 탐색) 문제 풀이 열쇠를 적당히 회전/이동시켜서 자물쇠 홈에 딱 맞게 끼워야 한다. 열쇠와 자물쇠 사이즈가 크지 않으므로 완전탐색으로 풀 수 있다. 수월한 풀이를 위해 자물쇠 리스트의 크기를 3배 이상으로 변경(자물쇠를 중간에 두고 나머지는 zero padding)하고 열쇠를 슬라이딩/회전 시키면서 하나씩 확인하면 된다. 2차원 리스트를 90도 회전시키는 함수와 자물쇠 리스트의 중간 부분이 모두 1인지 확인하는 함수를 만든다. 메인인 solution 함수에서는 자물쇠의 크기를 3배로 변환하고 새로운 자물쇠 리스트 중간에 기존의 자물쇠를 넣는다. 그리고 4가지 방향과 열쇠가 이동하는 하는 것을 for문을 돈다. 열쇠는 각 위치에서 자물쇠에 넣고 열쇠가 자물쇠에 정확히 들어맞는지 확인하고 다시 자물쇠에서 열쇠를 빼.. 2022. 2. 14.
[python] 프로그래머스_카펫 (완전 탐색) 문제 풀이 카펫 그림을 보고 가로길이 = a, 세로길이 = b 로 두고 조건에 부합하는 식을 만들고 for 문 돌면서 if 문으로 조건에 맞는 경우를 찾으면 된다. def solution(brown, yellow): total = brown + yellow for b in range(1, total+1): if total/b % 1 == 0: a = total/b if a>=b: if ((a-2)*(b-2) == yellow) and (2*a + 2*b -4 == brown): return [int(a),int(b)] 2022. 2. 14.
728x90