본문 바로가기

CS/Coding Test

(35)
백준 | 7576번 | 토마토 1) 문제 링크: https://www.acmicpc.net/problem/7576 2) 코드 from collections import deque m, n = map(int, input().split()) matrix = [list(map(int, input().split())) for _ in range(n)] queue = deque([]) dx, dy = [-1, 1, 0, 0], [0, 0, -1, 1] result = 0 for i in range(n): for j in range(m): if matrix[i][j] == 1: queue.append([i, j]) def bfs(): while queue: x, y = queue.popleft() for i in range(4): nx, ny ..
[ 이것이 취업을 위한 코딩 테스트다 with 파이썬 ] Chapter 16 다이나믹 프로그래밍 문제 - Q34 병사 배치하기 1. 문제 2. 코드 n = int(input()) arr = list(map(int, input().split())) arr.reverse() dp = [1] * n for i in range(1, n) : for j in range(0, i) : if arr[j] < arr[i] : dp[i] = max(dp[i], dp[j] + 1) print(n - max(dp))
[ 이것이 취업을 위한 코딩 테스트다 with 파이썬 ] Chapter 16 다이나믹 프로그래밍 문제 - Q33 퇴사 1. 문제 2. 코드 n = int(input()) t, p = [0]*n, [0]*n for i in range(n): t[i], p[i] = map(int, input().split()) dp = [0]*25 for i in range(n): if dp[i] > dp[i+1]: dp[i+1] = dp[i] if dp[i+t[i]] < dp[i] + p[i]: dp[i+t[i]] = dp[i] + p[i] print(dp[n])
[ 이것이 취업을 위한 코딩 테스트다 with 파이썬 ] Chapter 16 다이나믹 프로그래밍 문제 - Q32 정수 삼각형 1. 문제 2. 코드 n = int(input()) data = [] for i in range(n): data_list = list(map(int, input().split())) for j in range (n, i + 1, -1): data_list.append(0) data.append(data_list) for i in range(n): for j in range(n): if i == 0: up = 0 else: up = data[i-1][j] if i == 0: left_up = 0 else: left_up = data[i-1][j-1] data[i][j] = data[i][j] + max(up, left_up) print(max(data[n-1]))
[ 이것이 취업을 위한 코딩 테스트다 with 파이썬 ] Chapter 16 다이나믹 프로그래밍 문제 - Q31 금광 1. 문제 2. 코드 def gold_func(n, m, data): d = [[0] * m for _ in range(n)] for i in range(n): d[i][0] = data[i][0] for j in range(1, m): for i in range(n): if i+1 = 0: temp = data[i][j] + d[i-1][j-1] d[i][j] = max(d[i][j], temp) temp = data[i][j] + d[i][j-1] d[i][j] = max(d[i][j], temp) max_list = [] for i in range(n): max_l..
[ 이것이 취업을 위한 코딩 테스트다 with 파이썬 ] Chapter 14 정렬 문제 - Q24 안테나 1) 문제 2) 코드 N = int(input()) tmp = list(map(int, input().split())) x = [] for i in range(0, N): x.append([]) x[i].append(tmp[i]) for i in range(0, N): d = 0 for j in range(0, N): d += abs(x[i][0] - x[j][0]) x[i].append(d) x.sort(key=lambda k: (k[1], k[0])) print(x[0][0])
[ 이것이 취업을 위한 코딩 테스트다 with 파이썬 ] Chapter 14 정렬 문제 - Q23 국영수 1) 문제 2) 코드 N = int(input()) grade = [] # Junkyu 50 60 100 # Sangkeun 80 60 50 # Sunyoung 80 70 100 # Soong 50 60 90 # Haebin 50 60 100 # Kangsoo 60 80 100 # Donghyuk 80 60 100 # Sei 70 70 70 # Wonseob 70 70 90 # Sanghyun 70 70 80 # nsj 80 80 80 # Taewhan 50 60 90 for _ in range(N): grade.append(input().split()) grade.sort(key=lambda x: (-int(x[1]), int(x[2]), -int(x[3]), x[0])) for i in range(0..
[ 이것이 취업을 위한 코딩 테스트다 with 파이썬 ] Chapter 13 DFS/BFS 문제 - Q16 연구소 1) 문제 2) 코드 # n, m 값 입력 받기 n, m = map(int, input().split()) # 문제에서 주어진 map 초기값 data = [] # 벽을 세운 map temp = [[0] * m for _ in range(n)] # 문제에서 주어진 map 만들기 for _ in range(n): data.append(list(map(int, input().split()))) # 4가지 이동 방향 (동, 북, 서, 남) dx = [-1, 0, 1, 0] dy = [0, 1, 0, -1] # 안전 영역 개수 result = 0 # DFS 를 이용해서 각 바이러스가 사방으로 퍼지도록 하는 함수 def virus(x, y): for i in range(4): nx = x + dx[i] ny = y..
[ 이것이 취업을 위한 코딩 테스트다 with 파이썬 ] Chapter 13 DFS/BFS 문제 - Q15 특정 거리의 도시 찾기 1) 문제 2) 코드 from collections import deque # 정보 받기 n, m, k, x = map(int, input().split()) graph = [[] for _ in range(n+1)] # 도로 정보 받기 # 각 지점에서 연결 된 곳 정보 받기 for _ in range(m): a, b = map(int, input().split()) graph[a].append(b) # 모든 도시 최단 거리 초기화 distance = [False] * (n+1) # 출발 도시까지의 거리는 0으로 설정 distance[x] = 0 # bfs 수행 q = deque([x]) while q: # q의 맨 왼쪽 값 now에 넣기 now = q.popleft() # 현재 도시에서 이동할 수 있는..
[ 이것이 취업을 위한 코딩 테스트다 with 파이썬 ] Chapter 11 그리디 문제 - Q4 만들 수 없는 금액 Q4 만들 수 없는 금액 1) 문제 2) 코드 data = int(input()) coin = list(map(int, input().split())) coin.sort() ans = 1 for i in coin: if ans < i: break ans += 1 print(ans)
[ 이것이 취업을 위한 코딩 테스트다 with 파이썬 ] Chapter 11 그리디 문제 - Q3 문자열 뒤집기 Q3 문자열 뒤집기 1) 문제 2) 코드 data = input() ans = 0 ln = len(data) lst = list(map(int, data)) for i in range(0, ln): if lst[i-1] != lst[i]: ans += 1 print(ans/2)
[ 이것이 취업을 위한 코딩 테스트다 with 파이썬 ] Chapter 11 그리디 문제 - Q2 곱하기 혹은 더하기 Q2 곱하기 혹은 더하기 1) 문제 2) 코드 data = input() ans = 1 ln = len(data) lst = list(map(int, data)) for i in range(0, ln): if lst[i] == 0: ans += lst[i] else: ans *= lst[i] print(ans)