반응형

삼성코테 5

[삼성/코테기출][Python][백준][14888] 연산자 끼워넣기 (완전탐색/백트래킹/순열)

🍋 문제링크 https://www.acmicpc.net/problem/14888 🍎 코드 제출 기록 (메모리 및 시간) 메모리 : 160196 KB 시간 : 4694 ms 🍉 Code N = int(input()) number = list(map(int, input().split())) operator = [] tmp = list(map(int, input().split())) for i in range(4): if tmp[i] > 0: if i == 0: for j in range(tmp[i]): operator.append("+") if i == 1: for j in range(tmp[i]): operator.append("-") if i == 2: for j in range(tmp[i]): oper..

[삼성/코테기출][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 *..