본문 바로가기

CodingTest/Level2

(20)
[연습] 코딩테스트- 전화번호 목록 코딩테스트 연습 programmers.co.kr 전화번호 목록 def solution(phone_book): for x in phone_book: for y in phone_book: if x == y: continue s = len(x) if x in y[:s]: return False return True
[연습] 코딩테스트 - 가장 큰 수 코딩테스트 연습 programmers.co.kr 가장 큰 수 ㅘ.... 문자열 비교연산 같은 경우, [0]의 ascii 숫자로 비교하게된다. 같을 시 다음 인덱스의 ascii로 비교, 그걸 이용해서 모든 원소의 숫자를 제한숫자엿던 3자리로 맞춘 후, 비교연산 def solution(numbers): r = [] numbers = [str(x) for x in numbers] a = sorted(numbers, key = lambda x: x*3, reverse=True) return a solution([233,23])
[연습] 코딩테스트 - 큰 수 만들기 코딩테스트 연습 programmers.co.kr 큰 수 만들기 못풀어서 다른사람 풀이 참고함. def solution(number, k): st = [] for i in range(len(number)): while st and k > 0 and st[-1] 0 and st[-1] < number[i]: 이부분이 핵심 포인트. ex) 9122 같은 경우 2는 while문이 실행되지않는데, st[:len(st) - k] 이 부분때문에 어차피 중복인 뒷 숫자들을 잘라 버려버림
[연습] 코딩테스트 - 더 맵게 코딩테스트연습 programmers.co.kr 더 맵게 처음에 단순히 list의 pop, append를 이용해서 풀었는데, 정확성은 100%지만 효율성(시간초과) 0%로 나옴. 해결법을 찾다가 나온게 heapq. import heapq def solution(scoville, K): if len(scoville) == 1: if scoville[0] < K: return -1 else: return 0 heapq.heapify(scoville) cnt = 0 while scoville[0] < K: if len(scoville) == 1: return -1 x = heapq.heappop(scoville) y = heapq.heappop(scoville) mix = x+y*2 heapq.heappush(..
[연습] 코딩테스트- 기능개발 코딩테스트연습 programmers.co.kr 기능개발 def solution(progresses, speeds): result = [] cnt = 1 s = 0 while len(progresses) > 0: if progresses[0] + speeds[0] * cnt >= 100: progresses.pop(0) speeds.pop(0) s+=1 else: if s > 0: result.append(s) s = 0 cnt += 1 result.append(s) return( result) solution( [93,30,55],[1,30,5])
[연습] 코딩테스트 - 주식가격 코딩테스트연습 programmers.co.kr 주식가격 def solution(prices): answer = [] for x in range(len(prices)): cnt = 0 for y in range(len(prices))[x+1:]: cnt += 1 if prices[x] > prices[y]: break answer += [cnt] return (answer)
[연습]코딩테스트-프린터 코딩테스트연습 programmers.co.kr 프린터 def solution(priorities, location): answer = {} d = {x : priorities[x] for x in range(len(priorities))} while 1: if len(answer) == len(priorities): break c = max(list(d.values())) p = list(d.items())[0] if p[1] == c: d.pop(p[0]) answer[p[0]] = p[1] else: d.pop(p[0]) d[p[0]] = p[1] cnt = 1 for x,y in answer.items(): if x == location: return (cnt) else: cnt += 1 retur..
[연습] 코딩테스트- 쇠막대기 코딩테스트 연습 programmers.co.kr 쇠막대기 못풀어서 풀이 중 소스 첨부. def solution(arrangement): answer = 0 sticks = 0 rasor_to_zero = arrangement.replace(&#39;()&#39;,&#39;0&#39;) for i in rasor_to_zero: if i == &#39;(&#39;: sticks += 1 elif i ==&#39;0&#39; : answer += sticks else : sticks -= 1 answer += 1 return answer