Programmers / 2단계 / 땅따먹기 / python
·
Coding Test/Programmers
코딩테스트 연습 - 땅따먹기 | 프로그래머스 스쿨 (programmers.co.kr) 나의 풀이 . 모범 답안 def solution(land): for i in range(1,len(land)): for j in range(len(land[0])): land[i][j] += max(land[i-1][:j] + land[i-1][j+1:]) return max(land[len(land)-1]) 배열에서의 최댓값을 더해 최고점을 구해야 하는데 여기에 같은 열을 제외한다는 조건이 있는 문제이다. 같은 열을 제외해야 하므로 max 함수를 이용해서 최댓값의 인덱스를 찾고 다음 행의 최댓값의 인덱스와 비교하여 찾아야 하는지 고민하였지만, 무조건 첫 번째 행의 최댓값을 선택하여 그 열을 기준으로 구한 값이 최고점이..
Programmers / 2단계 / 뒤에 있는 큰 수 찾기 / python
·
Coding Test/Programmers
코딩테스트 연습 - 뒤에 있는 큰 수 찾기 | 프로그래머스 스쿨 (programmers.co.kr) 나의 풀이 def solution(numbers): result=[] for i in range(len(numbers)): for j in numbers[i:]: if numbers[i]
Programmers / 2단계 / [스택/큐] 주식가격 / python
·
Coding Test/Programmers
코딩테스트 연습 - 주식가격 | 프로그래머스 스쿨 (programmers.co.kr) 나의 풀이 . 모범 답안 def solution(prices): length = len(prices) # 모든 가격 max값으로 세팅 result = [ i for i in range (length - 1, -1, -1)] # 주식 가격이 떨어지는 경우를 찾아 수정 stack = [0] for i in range (1, length): while stack and prices[stack[-1]] > prices[i]: j = stack.pop() result[j] = i - j stack.append(i) return result 1. 모든 가격 max값으로 세팅: result=[4,3,2,1,0] 2. 가격이 떨어지는..
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) # 자카드 ..