본문 바로가기

Algorithm 💡272

[프로그래머스] 안전지대 def solution(board): # 지뢰가 있는 지역과 지뢰에 인접한 위, 아래, 좌, 우 대각선 칸을 모두 위험지역으로 분류 # 지뢰는 2차원 배열 board에 1로 표시되어 있고 board에는 지뢰가 매설 된 지역 1과, 지뢰가 없는 지역 0만 존재 answer = 0 def return_boom_set(x,y): temp_set = set() for i in range(x-1,x+2): for j in range(y-1,y+2): if 0  본 문제는 지뢰가 설치된 영역이 주어지고, 지뢰가 설치된 자리와 지뢰를 둘러싼 자리들이 위험지대라고 가정할 때 안.. 2024. 6. 9.
[백준 2636번] 치즈 https://www.acmicpc.net/problem/2636 # 판의 가장자리에는 치즈가 놓여 있지 않다.# 치즈에는 하나 이상의 구멍이 있을 수 있다.# 공기와 접촉된 칸은 한 시간이 지나면 녹아 없어진다.# 치즈의 구멍 속에는 공기가 없지만 구멍을 둘러싼 치즈가 녹아서 구멍이 열리면 구멍 속으로 공기가 들어가게 된다.# 공기 중에서 치즈가 모두 녹아 없어지는 데 걸리는 시간과 모두 녹기 한 시간 전에 남아있는 치즈조각이 놓여 있는 칸의 개수를 구하는 프로그램from collections import dequedx = [-1,1,0,0]dy = [0,0,-1,1]r, c = map(int,input().split())area = [list(map(int,input().split())) for _ .. 2024. 6. 4.
[백준 4485번] 녹색 옷 입은 애가 젤다지? # 젤다의 전설 게임에서 화폐의 단위는 루피(rupee) # '도둑루피'라 불리는 검정색 루피도 존재하는데, 이걸 획득하면 오히려 소지한 루피가 감소하게 된다 # 링크는 지금 도둑루피만 가득한 N x N 크기의 동굴의 제일 왼쪽 위에 있다 # 링크는 이 동굴의 반대편 출구, 제일 오른쪽 아래 칸인 [N-1][N-1]까지 이동해야 한다 # 동굴의 각 칸마다 도둑루피가 있는데, 이 칸을 지나면 해당 도둑루피의 크기만큼 소지금을 잃게 된다 # 링크가 잃을 수밖에 없는 최소 금액은 얼마일까? import sys from collections import deque input = sys.stdin.readline dx = [-1,1,0,0] dy = [0,0,-1,1] INF = float("inf") index.. 2024. 4. 22.
[백준 23289번] 온풍기 안녕! 23289번: 온풍기 안녕! 유난히 추운 날씨가 예상되는 이번 겨울을 대비하기 위해 구사과는 온풍기를 설치하려고 한다. 온풍기의 성능을 테스트하기 위해 구사과는 집을 크기가 R×C인 격자판으로 나타냈고, 1×1 크기 www.acmicpc.net import sys from collections import deque input = sys.stdin.readline # 가장 처음에 모든 칸의 온도는 0 # 1. 집에 있는 모든 온풍기에서 바람이 한 번 나옴 # 2. 온도가 조절됨 # 3. 온도가 1 이상인 가장 바깥쪽 칸의 온도가 1씩 감소 # 4. 초콜릿을 하나 먹는다. # 5. 조사하는 모든 칸의 온도가 K 이상이 되었는지 검사. # 모든 칸의 온도가 K이상이면 테스트를 중단하고, 아니면 1부터 다시 .. 2024. 4. 13.
[백준 17471번] 게리맨더링 17471번: 게리맨더링선거구를 [1, 4], [2, 3, 5, 6]으로 나누면 각 선거구의 인구는 9, 8이 된다. 인구 차이는 1이고, 이 값보다 더 작은 값으로 선거구를 나눌 수는 없다.www.acmicpc.netimport sys from itertools import combinations from collections import deque # 구역을 두 개의 선거구로 나눠야 하고, 각 구역은 두 선거구 중 하나에 포함되어야 한다. # 선거구는 구역을 적어도 하나 포함해야 하고, 한 선거구에 포함되어 있는 구역은 모두 연결되어 있어야 한다. input = sys.stdin.readline n = int(input()) peoples = [0] + list(map(int,input().split.. 2024. 4. 8.
[백준 20058번] 마법사 상어와 파이어스톰 20058번: 마법사 상어와 파이어스톰 마법사 상어는 파이어볼과 토네이도를 조합해 파이어스톰을 시전할 수 있다. 오늘은 파이어스톰을 크기가 2N × 2N인 격자로 나누어진 얼음판에서 연습하려고 한다. 위치 (r, c)는 격자의 r행 c www.acmicpc.net import copy from collections import deque n, q = map(int,input().split()) area = [list(map(int,input().split())) for _ in range(2**n)] visited = [[False]*len(area) for _ in range(len(area))] l_list = list(map(int,input().split())) dx = [0,0,-1,1] dy .. 2024. 4. 7.