본문 바로가기

CodingTest

(238)
[ 프로그래머스 ] 가장 큰 수 첫 제출 전에 이 방법 저 방법 시도하다보니 다시 익히는 것들이 많아서 정리하고자 먼저 적습니다. 1. 딕셔너리를 키 기준으로 정렬하기 (여기서는 정렬 순서 반대로 옵션도 줬습니다.) dic = dict(sorted(dic.items(), reverse=True)) 2. join 함수 사용 ( list to str join) https://stackoverflow.com/questions/12453580/how-do-i-concatenate-items-in-a-list-to-a-single-string 1) >>> sentence = ['this', 'is', 'a', 'sentence'] >>> '-'.join(sentence) 'this-is-a-sentence' >>> ' '.join(sentenc..
[ 프로그래머스 ] K번째 수 / 1번째 제출 / def solution(array, commands): answer = [] for command in commands: i, j, k = command new = array[i-1:j] new.sort() answer.append(new[k-1]) return answer 채점 결과 정확성: 100.0 합계: 100.0 / 100.0 생각보다 간단하게 구현했습니다. 다른 분들의 풀이를 보면 sort() 보다는 sorted()를 훨씬 많이 쓰시는 것을 보고 두 메서드 간 차이가 있는지 궁금해졌습니다. 저는 보통 sort()를 더 자주 사용하기 때문입니다. 더보기 sorted() returns a new sorted list, leaving the original list unaffec..
[ 프로그래머스 ] 더 맵게 / 1번째 제출 / import heapq def solution(scoville, K): answer = 0 heapq.heapify(scoville) count = 0 while scoville: first = heapq.heappop(scoville) if K
[ 프로그래머스 ] 프린터 / 첫 번째 제출 / from collections import deque def solution(priorities, location): answer = 0 l = len(priorities) for i in range(l): priorities[i] = [priorities[i], i] q = deque(priorities) renew = [] while q: check = q.popleft() for i in range(len(q)): if check[0] < q[i][0]: q.append(check) break if l != len(q): renew.append(check) l = len(q) for i in range(len(renew)): if renew[i][1] == location: a..
[ 프로그래머스 ] 기능개발 / 제출 1 / from collections import deque import math def solution(progresses, speeds): answer = [] remain = deque(list(map(lambda x:100-x,progresses))) speed = deque(speeds) date = 0 keep = 0 while remain: date += math.ceil(remain.popleft() / speed.popleft()) keep += 1 while remain: if (remain[0]-date*speed[0]) results = [] 현재 진도율 93%, 증가 진도율 1% => 총 7일 소요 => 신규 추가 => results = [[7]] 현재 진도율 30%, 증..
[ 프로그래머스 ] 위장 [ 1차 제출 ] def solution(clothes): answer = 0 items = {} for cloth in clothes: if cloth[1] in items: items[cloth[1]] += 1 else: items[cloth[1]] = 1 values = list(items.values()) for i in range(len(values)): answer += values[i] for j in range(len(values)-i-1): mul = values[i] for k in range(i+1, len(values)): mul *= values[k] answer += mul return answer 채점 결과 정확성: 28.6 합계: 28.6 / 100.0 제시한 테스트 케이스 ..
[프로그래머스] 전화번호 목록 / 1 번째 제출 / def solution(phone_book): answer = True phone_book.sort(key = lambda x : len(x)) for i in range(len(phone_book)): pre_item = phone_book[i] for j in range(i+1,len(phone_book)): if pre_item == phone_book[j][:len(pre_item)]: return False return answer 정확성: 83.3 (테스트 20 / 20) 효율성: 8.3 (테스트 2 / 4) : 사유는 시간초과 합계: 91.7 / 100.0 시간초과가 나올 것을 어느정도 예상하고 우선 정확성 테스트를 위해 한 번 제출해봤습니다. 역시나 시간 초과가 뜨고 ..
[프로그래머스] 완주하지 못한 선수 / 제출 1회 차 / 정확성 100% 효율성 0% : 시간 초과 이유 추측 : participant 범위가 1