백준(Python) 풀이/구현 139

백준(Python) 14499번 주사위 굴리기 풀이

Python으로 구현한 14499번 주사위 굴리기 문제 풀이입니다. https://www.acmicpc.net/problem/14499 14499번: 주사위 굴리기 첫째 줄에 지도의 세로 크기 N, 가로 크기 M (1 ≤ N, M ≤ 20), 주사위를 놓은 곳의 좌표 x, y(0 ≤ x ≤ N-1, 0 ≤ y ≤ M-1), 그리고 명령의 개수 K (1 ≤ K ≤ 1,000)가 주어진다. 둘째 줄부터 N개의 줄에 지 www.acmicpc.net n, m, x, y, k = map(int, input().split()) data = [list(map(int, input().split())) for _ in range(n)] ball = [0] * 6 directions = list(map(int, input..

백준(Python) 21610번 마법사 상어와 비바라기 풀이

Python으로 구현한 21610번 마법사 상어와 비바라기 문제 풀이입니다. https://www.acmicpc.net/problem/21610 21610번: 마법사 상어와 비바라기 마법사 상어는 파이어볼, 토네이도, 파이어스톰, 물복사버그 마법을 할 수 있다. 오늘 새로 배운 마법은 비바라기이다. 비바라기를 시전하면 하늘에 비구름을 만들 수 있다. 오늘은 비바라기 www.acmicpc.net n, m = map(int, input().split()) data = [list(map(int, input().split())) for _ in range(n)] cloud = [[n-1, 0], [n-1, 1], [n-2, 0], [n-2, 1]] dx = [0, -1, -1, -1, 0, 1, 1, 1] dy..

백준(Python) 20055번 컨베이어 벨트 위의 로봇 풀이

Python으로 구현한 20055번 컨베이어 벨트 위의 로봇 문제 풀이입니다. https://www.acmicpc.net/problem/20055 20055번: 컨베이어 벨트 위의 로봇 길이가 N인 컨베이어 벨트가 있고, 길이가 2N인 벨트가 이 컨베이어 벨트를 위아래로 감싸며 돌고 있다. 벨트는 길이 1 간격으로 2N개의 칸으로 나뉘어져 있으며, 각 칸에는 아래 그림과 같이 1부 www.acmicpc.net from collections import deque n, k = map(int, input().split()) belt = deque(list(map(int, input().split()))) robot = deque([0] * n) result = 0 while True : # 1단계 수행 be..

백준(Python) 16234번 인구 이동 풀이

Python으로 구현한 16234번 인구 이동 문제 풀이입니다. https://www.acmicpc.net/problem/16234 16234번: 인구 이동 N×N크기의 땅이 있고, 땅은 1×1개의 칸으로 나누어져 있다. 각각의 땅에는 나라가 하나씩 존재하며, r행 c열에 있는 나라에는 A[r][c]명이 살고 있다. 인접한 나라 사이에는 국경선이 존재한다. 모 www.acmicpc.net from collections import deque # 특정 위치에서 출발하여 모든 연합을 체크한 뒤에 데이터 갱신 def process(x, y, index) : # (x, y)의 위치와 연결된 나라(연합) 정보를 담는 리스트 united = [] united.append((x, y)) # 너비 우선 탐색(BFS)을..

백준(Python) 15686번 치킨 배달 풀이

Python으로 구현한 15686번 치킨 배달 문제 풀이입니다. https://www.acmicpc.net/problem/15686 15686번: 치킨 배달 크기가 N×N인 도시가 있다. 도시는 1×1크기의 칸으로 나누어져 있다. 도시의 각 칸은 빈 칸, 치킨집, 집 중 하나이다. 도시의 칸은 (r, c)와 같은 형태로 나타내고, r행 c열 또는 위에서부터 r번째 칸 www.acmicpc.net from itertools import combinations def get_sum(candidate) : value = 0 for hx, hy in house : temp = 1e9 for cx, cy in candidate : temp = min(temp, abs(hx - cx) + abs(hy - cy)) ..

백준(Python) 14891번 톱니바퀴 풀이

Python으로 구현한 14891번 톱니바퀴 문제 풀이입니다. https://www.acmicpc.net/problem/14891 14891번: 톱니바퀴 첫째 줄에 1번 톱니바퀴의 상태, 둘째 줄에 2번 톱니바퀴의 상태, 셋째 줄에 3번 톱니바퀴의 상태, 넷째 줄에 4번 톱니바퀴의 상태가 주어진다. 상태는 8개의 정수로 이루어져 있고, 12시방향부터 www.acmicpc.net from collections import deque def left(num, direction) : if num < 0 : return if data[num][2] != data[num+1][6] : left(num-1, -direction) data[num].rotate(direction) def right(num, direc..

백준(Python) 14503번 로봇 청소기 풀이

Python으로 구현한 14503번 로봇 청소기 문제 풀이입니다. https://www.acmicpc.net/problem/14503 14503번: 로봇 청소기 로봇 청소기가 주어졌을 때, 청소하는 영역의 개수를 구하는 프로그램을 작성하시오. 로봇 청소기가 있는 장소는 N×M 크기의 직사각형으로 나타낼 수 있으며, 1×1크기의 정사각형 칸으로 나누어 www.acmicpc.net def solution(x, y, d) : global result if data[x][y] == 0 : data[x][y] = 2 result += 1 for i in range(4) : nd = (d + 3) % 4 nx = x + dx[nd] ny = y + dy[nd] if data[nx][ny] == 0 : solutio..

백준(Python) 14500번 테트로미노 풀이

Python으로 구현한 14500번 테트로미노 문제 풀이입니다. https://www.acmicpc.net/problem/14500 14500번: 테트로미노 폴리오미노란 크기가 1×1인 정사각형을 여러 개 이어서 붙인 도형이며, 다음과 같은 조건을 만족해야 한다. 정사각형은 서로 겹치면 안 된다. 도형은 모두 연결되어 있어야 한다. 정사각형의 변 www.acmicpc.net # Case 1 n, m = map(int, input().split()) board = [list(map(int, input().split())) for _ in range(n)] max_value = 0 # 테트로미노 좌표 정보 (기준점은 가장 왼쪽 + 위쪽에 위치한 정사각형) case = [ # case 1 (ㅡ, ㅣ) [[0,..

백준(Python) 21608번 상어 초등학교 풀이

Python으로 구현한 21608번 상어 초등학교 문제 풀이입니다. https://www.acmicpc.net/problem/21608 21608번: 상어 초등학교 상어 초등학교에는 교실이 하나 있고, 교실은 N×N 크기의 격자로 나타낼 수 있다. 학교에 다니는 학생의 수는 N2명이다. 오늘은 모든 학생의 자리를 정하는 날이다. 학생은 1번부터 N2번까지 번호 www.acmicpc.net from heapq import heappush, heappop # 만족도 0이면 0, 1이면 1, 2면 10, 3이면 100, 4면 1000 def satisfied() : result = 0 for r in range(n) : for c in range(n) : if not board[r][c] : continue ..

백준(Python) 13460번 구슬 탈출 2 풀이

Python으로 구현한 13460번 구슬 탈출 2 문제 풀이입니다. https://www.acmicpc.net/problem/13460 13460번: 구슬 탈출 2 첫 번째 줄에는 보드의 세로, 가로 크기를 의미하는 두 정수 N, M (3 ≤ N, M ≤ 10)이 주어진다. 다음 N개의 줄에 보드의 모양을 나타내는 길이 M의 문자열이 주어진다. 이 문자열은 '.', '#', 'O', 'R', 'B' www.acmicpc.net from collections import deque n, m = map(int, input().split()) board = [] for i in range(n) : board.append(list(input())) for j in range(m) : if board[i][j] ..