본문 바로가기

분류 전체보기16

[백준] 트리 4256번 Python 문제트리 BT의 전위, 중위 순회한 결과가 주어졌을 때, 후위 순회했을 때의 결과를 구하는 프로그램을 작성하시오.  첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스의 첫째 줄에는 노드의 개수 n이 주어진다. (1 ≤ n ≤ 1,000) BT의 모든 노드에는 1부터 n까지 서로 다른 번호가 매겨져 있다. 다음 줄에는 BT를 전위 순회한 결과, 그 다음 줄에는 중위 순회한 결과가 주어진다. 항상 두 순회 결과로 유일한 이진 트리가 만들어지는 경우만 입력으로 주어진다. 각 테스트 케이스마다 후위 순회한 결과를 출력 한다. 문제 생각 & 풀이주어진 전위 순회(preorder)와 중위 순회(inorder) 결과를 통해 이진 트리를 복원하고, 후위 순회(postorder) 결과를 구하는 것이다. .. 2024. 7. 28.
[백준] 빵집 3109번 Python 문제빵집 원웅이 빵집의 모습이 주어졌을 때, 원웅이가 설치할 수 있는 가스관과 빵집을 연결하는 파이프라인의 최대 개수를 구하는 프로그램을 작성하시오.  첫째 줄에 R과 C가 주어진다. (1 ≤ R ≤ 10,000, 5 ≤ C ≤ 500)다음 R개 줄에는 빵집 근처의 모습이 주어진다. '.'는 빈 칸이고, 'x'는 건물이다. 처음과 마지막 열은 항상 비어있다.첫째 줄에 원웅이가 놓을 수 있는 파이프라인의 최대 개수를 출력한다.문제 생각 & 풀이주요 아이디어는 첫 번째 열에서 시작하여 마지막 열에 도달하는 가능한 모든 경로를 탐색하는 것이었다.각 경로는 겹치지 않아야 하며, 건물이 있는 칸은 지나갈 수 없다.1. 방향의 우선순위를 오른쪽 위 대각, 오른쪽 중간, 오른쪽 아래 대각으로 시작2. 탐색 중 방문한.. 2024. 7. 21.
[백준] 상어 중학교 21609번 Python 문제상어 중학교오토 플레이가 모두 끝났을 때 획득한 점수의 합을 구해보자.연결된 블록의 집합에서일반 블록을 적어도 하나 이상  포함일반 블록의 색은 모두 같아야 함검은색 블록은 포함되어선 안됨블록의 수는 2개 이상모두 인접하고 있어야 함게임의 오토 플레이 기능을 만들기 위한 조건을 살펴보면블록의 크기 > 무지개 블록의 수 > 기준 블록의 행 > 기존 블록의 열 기준으로 큰 값을 가진 블록 그룹을 선택함위 1의 조건에서 찾은 블록 그룹의 모든 블록 제거, 블록 그룹의 포함된 블록의 수를 B 라고 할 때, B^2점을 획득함.격자에 중력이 작용한다.격자가 90도 반시계 방향으로 회전한다.다시 격자에 중력이 작용한다.격자에 중력이 작용하면, 검은색 블록을 제외하고 모든 블록의 행의 번호가 큰 칸으로 이동한다. .. 2024. 7. 16.
[백준] 상어 초등학교 21608번 Python 문제상어 초등학교에는 교실이 하나 있고, 교실은 N×N 크기의 격자로 나타낼 수 있다. 학교에 다니는 학생의 수는 N2명이다. 오늘은 모든 학생의 자리를 정하는 날이다. 학생은 1번부터 N2번까지 번호가 매겨져 있고, (r, c)는 r행 c열을 의미한다. 교실의 가장 왼쪽 윗 칸은 (1, 1)이고, 가장 오른쪽 아랫 칸은 (N, N)이다.선생님은 학생의 순서를 정했고, 각 학생이 좋아하는 학생 4명도 모두 조사했다. 이제 다음과 같은 규칙을 이용해 정해진 순서대로 학생의 자리를 정하려고 한다. 한 칸에는 학생 한 명의 자리만 있을 수 있고, |r1 - r2| + |c1 - c2| = 1을 만족하는 두 칸이 (r1, c1)과 (r2, c2)를 인접하다고 한다.비어있는 칸 중에서 좋아하는 학생이 인접한 칸에.. 2024. 7. 15.
[백준] 새로운 게임2 17837번 Python 문제재현이는 주변을 살펴보던 중 체스판과 말을 이용해서 새로운 게임을 만들기로 했다. 새로운 게임은 크기가 N×N인 체스판에서 진행되고, 사용하는 말의 개수는 K개이다. 말은 원판모양이고, 하나의 말 위에 다른 말을 올릴 수 있다. 체스판의 각 칸은 흰색, 빨간색, 파란색 중 하나로 색칠되어있다.게임은 체스판 위에 말 K개를 놓고 시작한다. 말은 1번부터 K번까지 번호가 매겨져 있고, 이동 방향도 미리 정해져 있다. 이동 방향은 위, 아래, 왼쪽, 오른쪽 4가지 중 하나이다.턴 한 번은 1번 말부터 K번 말까지 순서대로 이동시키는 것이다. 한 말이 이동할 때 위에 올려져 있는 말도 함께 이동한다. 말의 이동 방향에 있는 칸에 따라서 말의 이동이 다르며 아래와 같다. 턴이 진행되던 중에 말이 4개 이상 쌓.. 2024. 7. 15.
[백준] 새로운 게임 17780번 Python 문제재현이는 주변을 살펴보던 중 체스판과 말을 이용해서 새로운 게임을 만들기로 했다. 새로운 게임은 크기가 N×N인 체스판에서 진행되고, 사용하는 말의 개수는 K개이다. 말은 원판모양이고, 하나의 말 위에 다른 말을 올릴 수 있다. 체스판의 각 칸은 흰색, 빨간색, 파란색 중 하나로 색칠되어있다.게임은 체스판 위에 말 K개를 놓고 시작한다. 말은 1번부터 K번까지 번호가 매겨져 있고, 이동 방향도 미리 정해져 있다. 이동 방향은 위, 아래, 왼쪽, 오른쪽 4가지 중 하나이다.턴 한 번은 1번 말부터 K번 말까지 순서대로 이동시키는 것이다. 한 말이 이동할 때 위에 올려져 있는 말도 함께 이동하며, 가장 아래에 있는 말만 이동할 수 있다. 말의 이동 방향에 있는 칸에 따라서 말의 이동이 다르며 아래와 같다.. 2024. 7. 14.