반응형

➰ 취업준비/알고리즘 문제풀이 39

[삼성/코테기출][Python][백준][20058] 마법사 상어와 파이어스톰 (시뮬레이션/구현)

🍋 문제링크 20058번: 마법사 상어와 파이어스톰 마법사 상어는 파이어볼과 토네이도를 조합해 파이어스톰을 시전할 수 있다. 오늘은 파이어스톰을 크기가 2N × 2N인 격자로 나누어진 얼음판에서 연습하려고 한다. 위치 (r, c)는 격자의 r행 c www.acmicpc.net 🍎 코드 제출 기록 (메모리 및 시간) 메모리 : 297264 KB 시간 : 1400 ms 🥝 메모 1. 깊은 복사와 얕은 복사 ice 의 배열을 tmp에 그대로 복사하기 위해서 tmp = ice 를 하면 얕은 복사를 하기 때문에 ice 배열의 원소를 변경하면 tmp 배열의 원소도 같이 변하기 때문에 tmp의 역할을 제대로 수행 할 수 없다. 따라서, import copy tmp = **copy.deepcopy**(ice) 위와 같..

[삼성/코테기출][Python][백준][20057] 마법사 상어와 토네이도 (시뮬레이션/구현)

🍋 문제링크 20057번: 마법사 상어와 토네이도 마법사 상어가 토네이도를 배웠고, 오늘은 토네이도를 크기가 N×N인 격자로 나누어진 모래밭에서 연습하려고 한다. 위치 (r, c)는 격자의 r행 c열을 의미하고, A[r][c]는 (r, c)에 있는 모래의 양을 www.acmicpc.net 🍎 코드 제출 기록 (메모리 및 시간) 메모리 : 160596 KB 시간 : 344 ms 🥝 메모 골드 4 체감 쉬운 문제 구현보다 이해하는 시간이 더 오래걸리는 문제 🍓 문제풀이 1. 토네이도가 도는 순서 2. 토네이도의 방향에 따른 모래 이동 dr, dc 🍉 Code dr=[] dc=[] sand=[] def fill_sand(): for i in range(N): sand.append(list(map(int, in..

[삼성/코테기출][Python][백준][20056] 마법사 상어와 파이어볼 (시뮬레이션/구현)

🍋 문제링크 20056번: 마법사 상어와 파이어볼 첫째 줄에 N, M, K가 주어진다. 둘째 줄부터 M개의 줄에 파이어볼의 정보가 한 줄에 하나씩 주어진다. 파이어볼의 정보는 다섯 정수 ri, ci, mi, si, di로 이루어져 있다. 서로 다른 두 파이어볼의 위치 www.acmicpc.net 🍎 코드 제출 기록 (메모리 및 시간) 메모리 : 151888 KB 시간 : 2488 ms 🥝 메모 구현은 다소 쉬웠으나 시간초과 때문에 오래 걸린 문제 🍓 문제풀이 1. 방향원소 방향이 0~7까지 항상 고정되어 있으므로 dc = [0, 1, 1, 1, 0, -1, -1, -1] dr = [-1, -1, 0, 1, 1, 1, 0, -1] → 방향원소의 0, 1, 2, 3, 4, 5, 6, 7 번째 c, r 좌표의..

[삼성/코테기출][Python][백준][20055] 컨베이어 벨트 위의 로봇 (시뮬레이션/구현)

🍋 문제링크 🍎 코드 제출 기록 (메모리 및 시간) 메모리 : 123444 KB 시간 : 1284 ms 🍓 문제풀이 if __name__ == '__main__': N, K = map(int, input().split()) belt = list(map(int, input().split())) robot = [] cnt = 0 # 횟수를 저장할 변수 up_idx = 0 # 올라가는 위치의 인덱스 down_idx = N - 1 # 내려가는 위치의 인덱스 while belt.count(0) < K: # 내구도가 0인 벨트가 K개 이상이면 끝 cnt += 1 # 한칸씩 오른쪽으로 회전 up_idx = (2 * N - 1) if (up_idx == 0) else (up_idx - 1) down_idx = (2 *..

[C++][백준][1260] DFS와 BFS (DFS/BFS)

🍋 문제링크 https://www.acmicpc.net/problem/1260 🍎 코드 제출 기록 (메모리 및 시간) 메모리 : 3656 KB 시간 : 4 ms 🍉 Code #include #include #include int N; int M; int V; std::vector arr[1001]; std::queue bfs_arr[1001]; std::queue dfs_arr[1001]; std::queue bfs_result; int visited[1001] = {0 , }; void input_faster() { std::ios_base::sync_with_stdio(false); std::cin.tie(0); std::cout.tie(0); } void my_queue_sort(int i) { s..

[Python][백준][2003] 수들의 합 2 (투 포인터)

🍋 문제링크 https://www.acmicpc.net/problem/2003 🍎 코드 제출 기록 (메모리 및 시간) 메모리 : 123352 KB 시간 : 276 ms 🍉 Code def sum_i2j(i, j, arr): answer = 0 for k in range(i, j+1): answer += arr[k] return answer N, M = map(int, input().split()) arr = list(map(int, input().split())) start = 0 end = 0 result = 0 while (start < N and end < N): if (sum_i2j(start, end, arr) == M): result += 1 end += 1 elif (sum_i2j(start..

[Python][백준][11057] 오르막 수 (DP)

🍋 문제링크 https://www.acmicpc.net/problem/11057 11057번: 오르막 수 🍎 코드 제출 기록 (메모리 및 시간) 메모리 : 123172 KB 시간 : 120 ms 🍉 Code N = int(input()) dp = [[0 for _ in range(19)] for _ in range(1009)] dp[1] = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1] for i in range(2, N+1): for j in range(10): if j == 0: dp[i][j] = sum(dp[i-1]) else: dp[i][j] = dp[i][j-1] - dp[i-1][j-1] print(sum(dp[N])%10007) 🥝 메모 DP[][] 배열을 2차원으로 선언 DP[x..

[Python][백준][1874] 스택 수열 (STACK)

🍋 문제링크 https://www.acmicpc.net/problem/1874 🍉 Code 메모리 : 143944 KB 시간 : 32 ms N = int(input()) arr=[] result=[] temp=[] for _ in range(N): arr.append(int(input())) j = 0 for i in range(1, N+1): temp.append(i) result.append('+') while (temp and temp[-1] == arr[j]): temp.pop() j += 1 result.append('-') if not temp: # 비어 있으면 for i in result: print(i) else: print("NO") 🥝 메모 문제 이해도 한참 걸림 → N이 push되면 ..

[Python][백준][2294] 동전 2 (DP)

🍋 문제링크 www.acmicpc.net/problem/2294 🍎 코드 제출 기록 (메모리 및 시간) 메모리 : 29028KB 시간 : 320ms 🍉 Code import sys input = sys.stdin.readline def nj(k, coin, dp): temp=[] for i in coin: if k >= i and dp[k-i] != -1: temp.append(dp[k-i]+1) if len(temp)>0: return min(temp) else: return -1 n, k = map(int, input().split()) coin=[] for i in range(n): coin.append(int(input())) coin.sort() dp = [-1 for i in range(k +..