Coding Test
-
[이코테 Greedy] 숫자 카드 게임Coding Test/이것이 코딩 테스트다 2021. 1. 8. 02:43
# 문제 숫자 카드 게임은 여러 개의 숫자 카드 중에서 가장 높은 숫자가 쓰인 카드 한 장을 뽑는 게임이다. 단, 게임의 룰을 지키며 카드를 뽑아야 하고 룰은 다음과 같다. 1. 숫자가 쓰인 카드들이 N X M 형태로 놓여 있다. 이때 N은 행의 개수를 의미하며, M은 열의 개수를 의미한다. 2. 먼저 뽑고자 하는 카드가 포함되어 있는 행을 선택한다. 3. 그다음 선택된 행에 포함된 카드들 중 가장 숫자가 낮은 카드를 뽑아야 한다. 4. 따라서 처음에 카드를 골라낼 행을 선택할 때, 이후에 해당 행에서 가장 숫자가 낮은 카드를 뽑을 것을 고려하여 최종적으로 가장 높은 숫자의 카드를 뽑을 수 있도록 전략을 세워야 한다. 카드들이 N X M 형태로 놓여 있을 때, 게임의 룰에 맞게 카드를 뽑는 프로그램을 만..
-
[백준 7576번] 토마토Coding Test/백준 2021. 1. 6. 09:37
# 문제 내 풀이 - 문제 풀이 실패, 수정 답안 from collections import deque def bfs(): # 동서남북 방향벡터 설정 dx = [1, 0, -1, 0] dy = [0, -1, 0, 1] days = -1 # while의 종료 조건으로 1씩 밀리기 때문에 0이 아닌 -1로 설정 while ripe: days += 1 # 현재 큐에 담긴 익은 토마토의 수만큼 for _ in range(len(ripe)): x, y = ripe.popleft() for i in range(4): nx = x + dx[i] ny = y + dy[i] if nx = n or ny = m: continue # 익은 토마토 주변에 익지 않은 토마토가 있는 경우 ..
-
[백준 1021번] 회전하는 큐Coding Test/백준 2021. 1. 5. 21:26
# 문제 내 풀이 from collections import deque # 큐를 왼쪽으로 회전시키는 함수 정의 def move_left(nums): nums.append(nums.popleft()) # 큐를 오른쪽으로 회전시키는 함수 정의 def move_right(nums): nums.appendleft(nums.pop()) n, m = map(int, input().split()) targets = list(map(int, input().split())) # 뽑아내려는 원소의 위치 nums = deque([i + 1 for i in range(n)]) # 초기의 큐 result = 0 # 순환 횟수 저장 for target in targets: idx = nums.index(target) # 찾아야 ..
-
[백준 1874번] 스택 수열Coding Test/백준 2021. 1. 5. 02:12
# 문제 내 풀이 from collections import deque n = int(input()) nums = deque([int(input()) for _ in range(n)]) # 주어진 수열을 큐 형태로 사용 stack = [] result = [] # 스택에 1 ~ n까지의 수를 오름차순으로 삽입 for i in range(1, n + 1): stack.append(i) result.append('+') # nums와 stack에 원소가 있고, nums의 첫번째 값이 stack의 최상단 값과 같다면 while nums and stack and nums[0] == stack[-1]: stack.pop() # 스택의 최상단 값 제거 nums.popleft() # 큐의 맨 앞에 있는 값 제거 re..
-
[백준 1966번] 프린터 큐Coding Test/백준 2021. 1. 5. 02:07
# 문제 내 풀이 from collections import deque t = int(input()) for num in range(t): n, m = map(int, input().split()) # 문서마다 중요도 입력 받음 importance = list(map(int, input().split())) # 각 문서의 순서와 중요도를 묶은 튜플을 원소로 갖는 큐 생성 queue = deque(enumerate(importance)) cnt = 0 # 인쇄 횟수 저장 while queue: pass_print = False idx, val = queue.popleft() # 만일 큐의 가장 앞 문서의 중요도보다 중요도가 높은 문서가 존재한다면 for i in range(len(queue)): if qu..
-
[백준 11866번] 요세푸스 문제 0Coding Test/백준 2021. 1. 5. 01:59
# 문제 내 풀이 n, k = map(int, input().split()) nums = [i for i in range(1, n + 1)] # 1 ~ n까지의 수를 오름차순으로 생성 queue = [] # 요세푸스 순열을 저장할 리스트 생성 idx = 0 # nums가 빌 때까지 while nums: idx = (idx + k - 1) % len(nums) # 수열에서 k번째 수의 인덱스 구하기 queue.append(nums.pop(idx)) # k번째 수를 제거하고 순열로 만듬 print('') 주목할 점 리스트를 str()하면 괄호 그대로 '[x, x, ...]'로 변환됨을 기억하자!