본문 바로가기
728x90

Python54

백준 나무 재테크 [16325] 파이썬(Python) 코드 + 해설 문제 설명상도는 N×N크기의 땅을 구매했다. 각 칸에는 나무를 심을 수 있으며, 처음에는 모든 칸에 양분이 5만큼 들어있다. 상도는 M개의 나무를 구매하여 땅에 심었다. 이 나무들은 매년 다음과 같은 과정을 거친다:봄: 나무가 자신의 나이만큼 양분을 먹고, 나이가 1 증가한다. 한 칸에 여러 나무가 있으면 나이가 어린 나무부터 양분을 먹는다. 양분이 부족하면 나무는 즉시 죽는다.여름: 봄에 죽은 나무가 양분으로 변한다. 각각의 죽은 나무마다 나이를 2로 나눈 값이 해당 칸에 양분으로 추가된다. 소수점 아래는 버린다.가을: 나이가 5의 배수인 나무가 번식한다. 인접한 8개의 칸에 나이가 1인 나무가 생긴다. 땅을 벗어나는 칸에는 나무가 생기지 않는다.겨울: 각 칸에 양분이 추가된다. 추가되는 양분의 양은 .. 2024. 11. 2.
백준 인구이동 [16324] 파이썬(Python) 코드 + 해설 문제 설명N×N 크기의 땅이 있다. 각 땅에는 나라가 하나씩 존재하며, 각 나라에는 인구수가 있다. 인접한 나라 사이에는 국경선이 있고, 인구 이동은 다음과 같은 과정으로 진행된다:국경선 열기: 국경선을 공유하는 두 나라의 인구 차이가 L명 이상, R명 이하라면 국경선을 연다.인구 이동: 국경선이 열려서 연결된 나라들은 연합을 이루고, 연합 내의 인구는 (연합의 총 인구수) / (연합을 이루는 칸의 개수)로 동일하게 분배된다. 소수점은 버린다.국경선 닫기: 모든 국경선을 닫는다.이 과정이 더 이상 인구 이동이 없을 때까지 반복된다. 인구 이동이 발생하는 일수를 구하는 것이 문제의 목표다.문제 접근이 문제는 BFS(너비 우선 탐색)를 활용한 시뮬레이션 문제다. 각 단계별로 인구 이동이 가능한지 확인하고, .. 2024. 11. 1.
백준 큐빙 [5373] 파이썬(Python) 코드 + 해설 문제 소개루빅스 큐브는 3×3×3 크기의 퍼즐로, 각 면이 9개의 스티커로 구성되어 있다. 각 면은 고유한 색상을 가지며, 큐브를 회전시켜 모든 면의 색상을 동일하게 만드는 것이 목표이다.이 문제에서는 풀려 있는 상태의 큐브에서 주어진 회전 명령을 수행한 후, 윗면의 색상을 출력해야 한다. 초기 상태에서 각 면의 색상은 다음과 같다:윗면(U): 흰색(w)아랫면(D): 노란색(y)앞면(F): 빨간색(r)뒷면(B): 주황색(o)왼쪽 면(L): 초록색(g)오른쪽 면(R): 파란색(b)문제 해결 접근큐브의 회전은 특정 면을 시계 방향(+) 또는 반시계 방향(-)으로 90도 회전시키는 것이다. 회전을 수행하면 해당 면뿐만 아니라 인접한 면들의 스티커도 변화한다.따라서, 큐브의 상태를 정확하게 표현하고 회전 명령을.. 2024. 11. 1.
백준 치킨 배달 [15686] 파이썬(Python) 코드 + 해설 문제 설명도시가 N×N 크기의 2차원 격자로 주어집니다. 각 칸에는 빈 칸(0), 집(1), 치킨집(2) 중 하나가 있다.도시의 치킨 거리는 모든 집의 치킨 거리의 합입니다. 여기서 치킨 거리는 집과 가장 가까운 치킨집 사이의 거리이다.프랜차이즈 본사에서는 수익을 극대화하기 위해 일부 치킨집을 폐업시키려고 한다. 최대 M개의 치킨집을 남기고 나머지는 폐업시킬 수 있다. 이때, 도시의 치킨 거리를 최소화하는 방법을 찾는 것이 문제의 목표이다.입력 및 제한 조건첫째 줄: N(2 ≤ N ≤ 50), M(1 ≤ M ≤ 13)둘째 줄부터 N개의 줄에 도시 정보가 주어진다.0: 빈 칸1: 집 (집의 개수는 최소 1개 이상, 최대 2N개 이하)2: 치킨집 (치킨집의 개수는 M 이상, 13 이하)목표폐업시키지 않을 M.. 2024. 10. 31.
백준 드래곤 커브 [15685] 파이썬(Python) 코드 + 해설 문제 설명드래곤 커브는 시작 점, 시작 방향, 세대를 가진다. 0세대 드래곤 커브는 길이가 1인 선분이며, 이후 세대는 이전 세대의 드래곤 커브를 끝점을 기준으로 시계 방향으로 90도 회전한 후, 끝점에 붙여서 만든다.주어진 여러 개의 드래곤 커브를 그린 후, 좌표 평면 위에서 네 꼭짓점이 모두 드래곤 커브의 일부인 1×1 크기의 정사각형의 개수를 구하는 문제이다.입력첫째 줄: 드래곤 커브의 개수 N (1≤N≤20)다음 N개의 줄: 각 드래곤 커브의 정보 x,y,d,gx,y: 드래곤 커브의 시작 점 (0≤x,y≤100)d: 시작 방향 (0≤d≤3)0: 오른쪽 (→)1: 위쪽 (↑)2: 왼쪽 (←)3: 아래쪽 (↓)g: 세대 (0≤g≤10)출력네 꼭짓점이 모두 드래곤 커브의 일부인 1×1 크기의 정사각형의.. 2024. 10. 31.
백준 사다리 조작 [15684] 파이썬(Python) 코드 + 해설 이 문제는 메모리 초과와 시간 초과가 굉장히 많이 나는 문제입니다. 문제 소개사다리 조작은 세로선과 가로선으로 이루어진 사다리 게임을 조작하여, 각 세로선의 결과가 자기 자신이 되도록 만드는 문제입니다. 세로선의 개수 N, 가로선을 놓을 수 있는 위치의 개수 H, 이미 놓인 가로선의 개수 M이 주어집니다. 최대 3개의 가로선을 추가하여 원하는 결과를 얻을 수 있는 최소의 가로선 개수를 구하는 것이 목표입니다.입력 조건:세로선의 개수 N: 2≤N≤102 가로선을 놓을 수 있는 위치의 개수 H: 1≤H≤30이미 놓인 가로선의 정보 M개출력 조건:추가해야 하는 가로선의 최소 개수 (단, 3개를 초과하면 -1을 출력) 문제 분석이 문제는 가능한 모든 가로선의 조합을 탐색하여 원하는 결과를 찾는 완전 탐색(Bru.. 2024. 10. 30.
백준 감시 [15683] 파이썬(Python) 코드 + 해설 문제 설명사무실은 N×M 크기의 격자로 표현됩니다.N,M ≤ 8이므로 격자의 크기는 최대 8 × 8 입니다.격자의 각 칸에는 다음 중 하나가 있습니다:빈 칸 (0): 아무것도 없는 공간입니다.벽 (6): CCTV의 시야를 가로막는 벽입니다.CCTV (1~5): CCTV 카메라가 설치되어 있습니다.CCTV는 총 5가지 종류가 있으며, 각 종류마다 감시할 수 있는 방향이 다릅니다.목표: CCTV의 방향을 적절히 설정하여 사각지대(감시되지 않는 영역)의 최소 크기를 구하는 것입니다.CCTV 종류 및 감시 방향CCTV의 종류에 따라 감시할 수 있는 방향이 정해져 있습니다:1번 CCTV: 한 방향 감시 (총 4가지 경우)2번 CCTV: 두 방향 감시 (서로 반대 방향, 총 2가지 경우)3번 CCTV: 두 방향 감.. 2024. 10. 29.
백준 톱니바퀴 [14891] 파이썬(Python) 코드 + 해설 문제 설명4개의 톱니바퀴가 일렬로 놓여 있습니다.각 톱니바퀴는 8개의 톱니를 가지고 있으며, 톱니는 N극(0) 또는 S극(1)을 가집니다.톱니바퀴는 시계 방향(1) 또는 반시계 방향(-1)으로 회전할 수 있습니다.톱니바퀴가 회전할 때, 인접한 톱니바퀴와 맞닿은 톱니의 극에 따라 인접한 톱니바퀴가 회전할 수 있습니다.맞닿은 톱니의 극이 다르면, 인접한 톱니바퀴는 반대 방향으로 회전합니다.맞닿은 톱니의 극이 같으면, 인접한 톱니바퀴는 회전하지 않습니다.K번의 회전이 주어지며, 각 회전에 대한 톱니바퀴 번호와 회전 방향이 주어집니다.모든 회전이 끝난 후, 각 톱니바퀴의 12시 방향 톱니의 극에 따라 점수를 계산합니다:1번 톱니바퀴: S극이면 1점2번 톱니바퀴: S극이면 2점3번 톱니바퀴: S극이면 4점4번 톱.. 2024. 10. 29.
백준 경사로 [14890] 파이썬(Python) 코드 + 해설 문제 이해하기문제 설명지도 크기: N×N ( 2≤N≤100 2≤N≤100 )각 칸에는 그곳의 높이가 적혀 있습니다 ( 1≤높이≤10 1≤높이≤10 ).길: 한 행 또는 한 열 전체를 말하며, 총 2N개의 길이 있습니다.길을 지나갈 수 있으려면 다음 조건을 만족해야 합니다:길에 속한 모든 칸의 높이가 같거나,경사로를 놓아서 지나갈 수 있어야 합니다.경사로 놓는 조건경사로의 특성:높이: 1길이: L ( 1 ≤ 𝐿 ≤ 𝑁 1≤L≤N )경사로의 개수는 충분히 많습니다.경사로를 놓을 수 있는 조건:경사로는 낮은 칸에 놓이며, L개의 연속된 칸에 경사로의 바닥이 모두 접해야 합니다.낮은 칸과 높은 칸의 높이 차이는 1이어야 합니다.경사로를 놓을 낮은 칸의 높이는 모두 같아야 합니다.이미 경사로를 놓은 곳에는 다.. 2024. 10. 28.
728x90