implementation 38

[프로그래머스 PCCP 모의고사 2-1번] 붕대 감기

def solution(bandage, health, attacks): # 1초마다 x 만큼 체력회복 # t초 동안 연속으로 붕대를 감는데 성공하면 y만큼의 체력을 추가로 회복 # 최대 체력 보다 체력이 커지는건 X # 몬스터에게 공격을 당하거나 기술이 끝나면 '붕대 감기' 재시전 + 연속 성공시간 0초기화 # 체력이 0 이하가 되면 캐릭터 사망 후 회복 X # 만약에 공격받고 죽으면 -1 리턴 # 입력 : 붕대감기 기술정보(시전 시간, 1초당 회복량, 추가 회복량), 최대 체력, 몬스터의 공격 패턴 # 출력 : 모든 공격을 받고 난 후 남은 체력 max_time = attacks[-1][0] # 몬스터의 마지막 공격시간 attack_list = [0]*(max_time+1) # 공격 목록을 리스트화 f..

[프로그래머스 PCCP 모의고사 3번] 카페 확장

from collections import deque def solution(menu, order, k): answer = 0 queue = deque() for i in order: queue.append(menu[i]) answer = max(answer,len(queue)) time = k while queue: # queue[0]과 time을 비교(걸리는 시간과 남은 시간) if queue[0] time: queue[0] -= time break else: queue.popleft() break return answer 이번 문제는 Queue 자료구조를 사용하여 푸는 문제인데 문제의 조건이 조금 ..

[프로그래머스 PCCP 모의고사 1번] 실습용 로봇

def solution(command): answer = [] # 로봇은 입력된 명령에 따라 x, y좌표를 이동 # G : 바라보는 방향으로 한칸 전진 # B : 바라보는 방향으로 한칸 후진 # 위, 오른, 아래, 왼 dx = [0,1,0,-1] dy = [1,0,-1,0] direction = 0 x,y = 0, 0 command = list(command) for com in command: if com == "R": direction = (direction + 1)%4 elif com == "L": if direction > 0: direction -= 1 else: direction = 3 elif com == "G": x += dx[direction] y += dy[direction] elif ..

[백준 7682번] 틱택토

7682번: 틱택토 입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 줄은 9개의 문자를 포함하며, 'X', 'O', '.' 중 하나이다. '.'은 빈칸을 의미하며, 9개의 문자는 게임판에서 제일 윗 줄 왼쪽부터의 순서이다. 입 www.acmicpc.net area = [["."]*3 for _ in range(3)] cases = set() def check_is_full(): is_full = True for i in range(3): for j in range(3): if area[i][j] == '.': is_full = False return is_full def check_end(): if check_is_full(): return True if (area[0][0] == area[0][1..

[백준 12100번] 2048(Easy) - 구현 / 시뮬레이션 / 완전탐색 / 백트래킹

12100번: 2048 (Easy) 첫째 줄에 보드의 크기 N (1 ≤ N ≤ 20)이 주어진다. 둘째 줄부터 N개의 줄에는 게임판의 초기 상태가 주어진다. 0은 빈 칸을 나타내며, 이외의 값은 모두 블록을 나타낸다. 블록에 쓰여 있는 수는 2 www.acmicpc.net # 4x4 크기 보드 # 한번 이동할 때 보드 위에 있는 모든 블록이 상-하-좌-우 중 하나로 이동 # 같은 값을 갖는 두 블록이 충돌하면 합쳐짐 # 한번의 이동에서 합쳐진 블록은 다시 합쳐질 수 X import copy n = int(input()) zone = [list(map(int,input().split())) for _ in range(n)] max_value = -1 # 왼쪽으로 이동시키는 함수 def moveLeft():..

[백준 2578번] 빙고

2578번: 빙고 첫째 줄부터 다섯째 줄까지 빙고판에 쓰여진 수가 가장 위 가로줄부터 차례대로 한 줄에 다섯 개씩 빈 칸을 사이에 두고 주어진다. 여섯째 줄부터 열째 줄까지 사회자가 부르는 수가 차례대로 www.acmicpc.net bingo = [list(map(int,input().split())) for _ in range(5)] numbers = [] answer = 0 for i in range(5): numbers += list(map(int,input().split())) def delete_number(n): for i in range(5): for j in range(5): if bingo[i][j] == n: bingo[i][j] = 0 return def count_row(): # 5..

[백준 20055번] 컨베이어 벨트 위의 로봇

20055번: 컨베이어 벨트 위의 로봇 길이가 N인 컨베이어 벨트가 있고, 길이가 2N인 벨트가 이 컨베이어 벨트를 위아래로 감싸며 돌고 있다. 벨트는 길이 1 간격으로 2N개의 칸으로 나뉘어져 있으며, 각 칸에는 아래 그림과 같이 1부 www.acmicpc.net n, k = map(int,input().split()) status = list(map(int,input().split())) data_top = [0]*n data_bottom = [0]*n status_top = status[:n] status_bottom = list(reversed(status[n:])) answer = 0 def count_zero(): # 내구성이 0인 칸의 개수를 구하는 함수 count = 0 for i in r..

[백준 1986번] 체스

1986번: 체스 첫째 줄에는 체스 판의 크기 n과 m이 주어진다. (1 ≤ n, m ≤ 1000) 그리고 둘째 줄에는 Queen의 개수와 그 개수만큼의 Queen의 위치가 입력된다. 그리고 마찬가지로 셋째 줄에는 Knight의 개수와 위치, www.acmicpc.net n, m = map(int,input().split()) # Knight, Queen, Pawn의 개수는 각각 100을 넘지 않는 음이 아닌 정수 queen_list = list(map(int,input().split())) knight_list = list(map(int,input().split())) pawn_list = list(map(int,input().split())) # Queen은 가로,세로,대각선으로 이동 가능 / 장애물..

[백준 20057번] 마법사 상어와 토네이도

20057번: 마법사 상어와 토네이도 마법사 상어가 토네이도를 배웠고, 오늘은 토네이도를 크기가 N×N인 격자로 나누어진 모래밭에서 연습하려고 한다. 위치 (r, c)는 격자의 r행 c열을 의미하고, A[r][c]는 (r, c)에 있는 모래의 양을 www.acmicpc.net n = int(input()) area = [list(map(int,input().split())) for _ in range(n)] dx = [0,1,0,-1] dy = [-1,0,1,0] count = 0 length = 1 direction = 0 answer = 0 x, y = n//2, n//2 def move(x,y,d): global answer total = area[x][y] five_percent = int(tot..

[백준 19236번] 청소년 상어

19236번: 청소년 상어 첫째 줄부터 4개의 줄에 각 칸의 들어있는 물고기의 정보가 1번 행부터 순서대로 주어진다. 물고기의 정보는 두 정수 ai, bi로 이루어져 있고, ai는 물고기의 번호, bi는 방향을 의미한다. 방향 bi는 www.acmicpc.net import copy def find_x_y(fish_number,area): # 물고기의 x,y 좌표를 찾는 함수 for i in range(4): for j in range(4): if area[i][j][0] == fish_number: return i,j def find_shark_loc(area): # 상어의 x,y 좌표를 찾는 함수 for i in range(4): for j in range(4): if area[i][j][0] == ..