Programmers / 2단계 / [힙(Heap)] 더 맵게 / python /
·
코딩테스트/programmers (python)
코딩테스트 연습 - 더 맵게 | 프로그래머스 스쿨 (programmers.co.kr) 나의 풀이 . 모범 답안 import heapq as hq def solution(scoville, K): hq.heapify(scoville) answer = 0 while True: first = hq.heappop(scoville) if first >= K: break if len(scoville) == 0: return -1 second = hq.heappop(scoville) hq.heappush(scoville, first + second*2) answer += 1 return answer import heapq def solution(scoville, K): h=[] for i in scoville: hea..
Programmers / 2단계 / 깊이/너비 우선 탐색(DFS/BFS) / python /
·
코딩테스트/programmers (python)
코딩테스트 연습 - 게임 맵 최단거리 | 프로그래머스 스쿨 (programmers.co.kr) 나의 풀이 . 모범 답안 from collections import deque def solution(maps): n = len(maps); m = len(maps[0]) visited = [[False] * m for _ in range(n)] q = deque() q.append((0, 0)) dx = [-1, 1, 0, 0] dy = [0, 0, -1, 1] visited[0][0]=True while q: y, x = q.popleft() for i in range(4): nx=x+dx[i] ny=y+dy[i] if 0
Programmers / 2단계 / k진수에서 소수 개수 구하기 / python / 2018 KAKAO BLIND RECRUITMENT
·
코딩테스트/programmers (python)
코딩테스트 연습 - k진수에서 소수 개수 구하기 | 프로그래머스 스쿨 (programmers.co.kr) 나의 풀이 . 모범 답안 # n을 k진법으로 나타낸 문자열 반환 def conv(n, k): s = '' while n: s += str(n%k) n //= k return s[::-1] # n이 소수인지 판정 def isprime(n): if n
Programmers / 2단계 / [1차] 뉴스 클러스터링 / python / 2018 KAKAO BLIND RECRUITMENT
·
코딩테스트/programmers (python)
코딩테스트 연습 - [1차] 뉴스 클러스터링 | 프로그래머스 스쿨 (programmers.co.kr) 나의 풀이 . 모범 답안 def solution(str1, str2): str1 = str1.upper() str2 = str2.upper() # 다중집합 구하기 A, B = [], [] for i in range(len(str1)-1): str = str1[i:i+2] # 두글자씩 끊어 if str.isalpha(): # 영문자로 된 글자만 다중집합의 원소로 만듦 A.append(str) for i in range(len(str2)-1): str = str2[i:i+2] # 두글자씩 끊어 if str.isalpha(): # 영문자로 된 글자만 다중집합의 원소로 만듦 B.append(str) # 자카드 ..
Programmers / 2단계 / 튜플 / python / 2019 카카오 개발자 겨울 인턴십
·
코딩테스트/programmers (python)
코딩테스트 연습 - 튜플 | 프로그래머스 스쿨 (programmers.co.kr) 나의 풀이 def solution(s): result=[] s=s[2:-2] s=s.split('},{') s.sort(key=lambda x: len(x)) for i in range(len(s)): if ',' not in s[i]: result.append(int(s[i])) else: for j in s[i]: if j not in s[i-1] and j!=',': result.append(int(j)) return result 튜플의 각 요소가 한 자리 수일 때만 적용되는 코드라 테스트 3에서 실패한 것 같다 모범 답안 def solution(s): answer = [] s = s[2:-2] s = s.split(..
Programmers / 2단계 / 모음사전 / python
·
코딩테스트/programmers (python)
https://school.programmers.co.kr/learn/courses/30/lessons/84512 나의 풀이 . word의 길이와 각 알파벳의 인덱스 값을 이용해 결과를 찾아낼 수 있을 것이라고 생각하였으나 어려움이 있었다. 모범 답안 중복 순열 이용 from itertools import product def solution(word): words = [] for i in range(1, 6): for c in product(['A', 'E', 'I', 'O', 'U'], repeat=i): words.append(''.join(list(c))) words.sort() return words.index(word) + 1 단순히 중복 순열을 이용하여 sort함수로 정렬을 하면 되는 문제였..
Programmers / 2단계 / 타겟 넘버 / python
·
코딩테스트/programmers (python)
코딩테스트 연습 - 타겟 넘버 | 프로그래머스 스쿨 (programmers.co.kr) 나의 풀이 . 모범 답안 DFS로 구현 def dfs(numbers, target, idx, values): # idx : 깊이 / values : 더하고 뺄 특정 leaf 값 global cnt cnt = 0 if idx == len(numbers) & values == target : # 깊이가 끝까지 닿았으면 cnt += 1 return elif idx == len(numbers) : # 끝까지 탐색했는데 sum이 target과 다르다면 그냥 넘어간다 return # 재귀함수로 구현 dfs(numbers, target, idx+1, values + numbers[idx]) # 새로운 value 값 세팅 dfs(n..
Programmers / 2단계 / 캐시 / python
·
코딩테스트/programmers (python)
코딩테스트 연습 - [1차] 캐시 | 프로그래머스 스쿨 (programmers.co.kr) 나의 풀이 . 모범 답안 def solution(cacheSize, cities): cache = [] time = 0 for city in cities: city = city.lower() if cacheSize: if not city in cache: if len(cache) == cacheSize: cache.pop(0) cache.append(city) time += 5 else: cache.pop(cache.index(city)) cache.append(city) time += 1 else: time += 5 return time LRU : 가장 오랫동안 참조되지 않은 페이지를 교체 LRU 예시) 캐시크기..