Programmers / 3단계 / [DFS/BFS] 네트워크 / python
·
Coding Test/Programmers
코딩테스트 연습 - 네트워크 | 프로그래머스 스쿨 (programmers.co.kr) 나의 풀이 . 모범 답안 DFS 풀이 def solution(n, computers): answer = 0 visited = [0 for i in range(n)] def dfs(computers, visited, start): stack = [start] while stack: j = stack.pop() if visited[j] == 0: visited[j] = 1 for i in range(0, len(computers)): if computers[j][i] ==1 and visited[i] == 0: stack.append(i) i=0 while 0 in visited: if visited[i] ==0: dfs(..
Programmers / 2단계 / [힙(Heap)] 더 맵게 / python /
·
Coding Test/Programmers
코딩테스트 연습 - 더 맵게 | 프로그래머스 스쿨 (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 /
·
Coding Test/Programmers
코딩테스트 연습 - 게임 맵 최단거리 | 프로그래머스 스쿨 (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
·
Coding Test/Programmers
코딩테스트 연습 - 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
·
Coding Test/Programmers
코딩테스트 연습 - [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 카카오 개발자 겨울 인턴십
·
Coding Test/Programmers
코딩테스트 연습 - 튜플 | 프로그래머스 스쿨 (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
·
Coding Test/Programmers
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
·
Coding Test/Programmers
코딩테스트 연습 - 타겟 넘버 | 프로그래머스 스쿨 (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..