공부/코딩테스트 51

[프로그래머스] 완주하지 못한 선수(파이썬)

https://programmers.co.kr/learn/courses/30/lessons/42576?language=python3 코딩테스트 연습 - 완주하지 못한 선수 수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다. 마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수 programmers.co.kr def solution(participant, completion): participant.sort() completion.sort() for i in range(len(participant)-1): if completion[i] != participant[i]: return participant[i] else:..

[프로그래머스] 신고 결과 받기(파이썬, 2022 KAKAO BLIND RECRUITMENT)

https://programmers.co.kr/learn/courses/30/lessons/92334 코딩테스트 연습 - 신고 결과 받기 문제 설명 신입사원 무지는 게시판 불량 이용자를 신고하고 처리 결과를 메일로 발송하는 시스템을 개발하려 합니다. 무지가 개발하려는 시스템은 다음과 같습니다. 각 유저는 한 번에 한 명의 programmers.co.kr 나의 답 : def solution(id_list, report, k): report=set(report) id_dict={} arrested=[] answer=[] idx=0 for i in id_list: id_dict[i]=[set(),0] answer.append(0) # print(id_dict) for j in report: j=j.split(..

[프로그래머스] 전화번호 목록(파이썬)

나의 답 : def solution(phone_book): phone_book.sort() l=["12","13","1412"] l.sort() print(l) for i in range(len(phone_book)-1): if phone_book[i] == phone_book[i+1][0:len(phone_book[i])]: #대박 in으로 찾았는데 다른 곳에 있을 수도 있어서 틀린 답임 ;;;;; #예를들면 '13', 1413' 이면 접두사에는 없는데 있긴 있음 return False return True 해쉬문젠데 이게 복잡도 덜 잡아먹긴 함 같은 유형 다른 답 : def solution(phoneBook): phoneBook = sorted(phoneBook) for p1, p2 in zip(ph..

[프로그래머스] 삼각 달팽이(파이썬)

나의 답 : def solution(n): answer = [[0 for j in range(1, i+1)] for i in range(1, n+1)] # answer = [] x, y = -1, 0 num = 1 for i in range(1,n+1): #1,2,3,4,5,6,7 for j in range(i,n+1): #1,2,3,4,5,6,7 if i % 3 == 1: x+=1 elif i % 3 == 2: y+=1 else: x-=1 y-=1 answer[x][y] = num num+=1 # print(answer) return sum(answer,[]) 리스트 덧셈 : sum([1,2,3],[]) # 리스트를 더하겠다는 것을 명시 다른 사람의 답 : itertools의 chain함수를 사용했다 ..

[프로그래머스] 피보나치 수(파이썬)

나의 답 : # def fib(n): # if n == 0: # return 0 # if n == 2 or n == 1: # return 1 # else: # return fib(n-2)+fib(n-1) # def solution(n): # return fib(n) % 1234567 def solution(n): l=[0,1] for i in range(1,n): l.append(l[i-1]+l[i]) return l[-1]%1234567 다른 사람의 답 : def fibonacci(num): a,b = 0,1 for i in range(num): a,b = b,a+b return a 다른 사람의 답 너무 좋다. 깔끔하다 n이 십만까지 커질 수 있기 때문에 재귀 ㄴㄴ DP로 ㄱㄱ