개발/프로그래머스4 프로그래머스 해시 level2 전회번호 목록 문제 설명 전화번호부에 적힌 전화번호 중, 한 번호가 다른 번호의 접두어인 경우가 있는지 확인하려 합니다. 전화번호가 다음과 같을 경우, 구조대 전화번호는 영석이의 전화번호의 접두사입니다. 구조대 : 119 박준영 : 97 674 223 지영석 : 11 9552 4421 전화번호부에 적힌 전화번호를 담은 배열 phone_book 이 solution 함수의 매개변수로 주어질 때, 어떤 번호가 다른 번호의 접두어인 경우가 있으면 false를 그렇지 않으면 true를 return 하도록 solution 함수를 작성해주세요. 아이디어 도전2 1. sort하기 2. 문자열로 바꾸기 -> 숫자도 if in 사용 가능 3. for로 비교 - 비교 대상이 자신의 다음 것부터 마지막까지 비교 - 하나라도 겹치는 것이 있.. 2020. 9. 2. 프로그래머스 해시 level1 완주하지 못한 선수- collections 모듈의 Counter 함수 내가 한 풀이 def solution(participant, completion): dict={} for p in participant: if p in dict: dict[p]+=1 else: dict[p]=1 for p in completion: if dict[p]==1: del(dict[p]) else: dict[p]-=1 answer=list(dict.keys())[0] return answer 1. 딕셔너리에 참가자 이름(p)을 key값으로 하여 그 수를 value 값으로 둔다. 2. 완주자 배열을 for문을 통해 돌며, value 값이 1일 경우 지우고 그 이상의 값일 경우 하나씩 뺀다. collection 모듈의 counter함수를 이용한 풀이 import collections def solu.. 2020. 9. 2. [파이썬]프로그래머스 level1 해시, 완주하지못한 선수 def solution(participant, completion): for p in completion: participant.remove(p) answer=participant[0] return answer 효율성에서 실패하였다. for문이 completion을 도는데 remove함수가 participant를 일일이 확인하며 돌기 때문에 시간복잡도가 높게 계산된 것으로 보인다. 함수를 사용할 때도 그 함수의 특징을 잘 생각해봐야겠다는 생각을 하였다. 딕셔너리를 이용하여 다시 만들어 보았다. def solution(participant, completion): dict={} for p in participant: if p in dict: dict[p]+=1 else: dict[p]=1 for p in .. 2020. 9. 1. 프로그래머스 level1 나누어 떨어지는 숫자 배열 def solution(arr, divisor): answer = [] for index in arr: if index%divisor==0 answer.append(index) answer.sort() if len(answer)==0:# 안에 아무것도 없다면 answer=-1 return answer => def solution(arr, divisor): answer = [i for i in arr if i % divisor == 0]; answer.sort(); return answer if len(answer) != 0 else [-1]; ==> def solution(arr, divisor): return sorted([n for n in arr if n%divisor == 0]) or [-1] h.. 2020. 8. 31. 이전 1 다음 728x90