본문 바로가기

All

(147)
[연습] 코딩테스트- 위장 코딩테스트 연습 programmers.co.kr 위장 import collections def solution(clothes): a = [[x[1]] for x in clothes] c = collections.Counter() for x in a: c += collections.Counter(x) d = 1 for x in c: d *= c[x]+1 return(d-1)
[연습] 코딩테스트- 전화번호 목록 코딩테스트 연습 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] 이 부분때문에 어차피 중복인 뒷 숫자들을 잘라 버려버림
python heapq 설명 heapq 모듈은 이진 트리(binary tree) 기반의 최소 힙(min heap) 자료구조 python에서 제공하는 heapq는 min-heap (최소힙)을 기본으로 제공한다. ex) [70,50,80,50] -> [50,50,80,70]이 된다. 알고리즘 문제를 풀다보면 단순 List의 append, pop을 사용하다가 시간초과(효율성검사)되는 경우가 발생.. 그럴때, heapq를 쓰면 시간복잡도가 나아지는지 효율성검사 통과하게됨. 사용법 선언 import heapq List -> heap 변경 import heapq a = [1,2,3] heapq.heapify(a) heap push, pop import heapq heapq.heappush(1,a) # push 1 , [1,2,3] -> ..
[연습] 코딩테스트 - 더 맵게 코딩테스트연습 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)