본문 바로가기
728x90

티스토리챌린지6

백준 gcd와 최단 경로 [32632] 파이썬(Python) 코드 + 해설 문제 설명정점이 1번부터 N번까지 있는 그래프가 주어진다. 두 정점 x와 y 사이에 간선이 존재하는 조건은 gcd⁡(x,y)=1일 때이다. 즉, 서로소인 정점들 사이에 간선이 존재한다.정점 x에서 정점 y까지의 최단 경로 길이 dist(x,y)는 경로에 포함된 간선의 개수로 정의된다. 경로가 존재하지 않으면 dist(x, y) = 10^{10^{10}}으로 정의된다.정수 K가 주어질 때, 다음 조건을 만족하는 정수 x의 개수를 구해야 한다.1≤x≤Ndist(x,K)=gcd⁡(x,K)문제 해결 방법이 문제는 각 정수 x에 대해 dist(x,K)와 gcd⁡(x,K)를 비교하여 조건을 만족하는 x의 개수를 구하는 문제이다.그래프의 특성 분석간선의 존재 조건: 두 정점 x와 y 사이에 간선이 존재하려면 gcd⁡.. 2024. 11. 12.
백준 ABB to BA (Hard) [32293] 파이썬(Python) 코드 + 해설 문제 설명'A'와 'B'로만 구성된 문자열 S가 주어진다. 다음 동작을 더 이상 수행할 수 없을 때까지 반복한다:문자열 S에서 첫 번째로 등장하는 부분 문자열 "ABB"를 찾는다.그 위치를 i라고 할 때, 𝑆𝑖와 𝑆𝑖+1를 각각 'B'와 'A'로 바꾸고, 𝑆𝑖+2​를 문자열에서 제거한다.즉, "ABB"를 "BA"로 변환한다.문자열에 "ABB"가 더 이상 존재하지 않을 때까지 이 과정을 반복한다.반복이 끝난 후의 문자열 S를 출력하는 프로그램을 작성해야 한다. 문제 해결 방법이 문제는 문자열에서 특정 패턴("ABB")을 찾아 변환하는 작업을 반복적으로 수행해야 한다. 그러나 문자열의 길이가 최대 5×10^5이므로 단순한 탐색으로는 시간 초과가 발생한다.효율적인 해결을 위해 다음과 같은 방법을 사.. 2024. 11. 11.
백준 토마토 [7576] 파이썬(Python) 코드 + 해설 문제 설명철수의 토마토 농장에서는 M x N 크기의 격자 모양 상자에 토마토를 보관한다. 토마토 중에는 익은 토마토(1)도 있고, 익지 않은 토마토(0)도 있으며, 토마토가 들어있지 않은 칸(-1)도 있다. 익은 토마토는 하루가 지나면 인접한 네 방향(상, 하, 좌, 우)에 있는 익지 않은 토마토를 익게 만든다. 이때, 상자에 있는 모든 토마토가 며칠이 지나면 다 익는지, 그 최소 일수를 구하는 프로그램을 작성한다. 단, 처음부터 모든 토마토가 익어있으면 0을 출력하고, 모두 익지 못하는 상황이면 -1을 출력해야 한다.문제 해결 방법이 문제는 BFS(너비 우선 탐색)를 이용해 해결할 수 있다. BFS는 그래프의 모든 인접 노드를 방문하며 탐색하는 방법으로, 여러 단계에 걸쳐 확산되는 문제를 해결하는 데 .. 2024. 11. 10.
백준 KCM Travel [10217] 파이썬(Python) 코드 + 해설 문제 설명찬민이는 인천에서 LA로 여행을 가려고 합니다. 하지만 구글에서 여행 비용을 최대 M원까지 지원해주기 때문에, 이 예산 내에서 가장 빠르게 LA에 도착해야 합니다. 각 도시 간의 항공편은 비용과 시간이 주어집니다.목표: 인천(1번 도시)에서 LA(N번 도시)까지 비용 M원 이하로 사용하면서 도착할 수 있는 가장 빠른 시간을 구하는 것입니다. 만약 예산 내에서 도착할 수 없다면 "Poor KCM"을 출력합니다.입력 조건T: 테스트 케이스의 수 (1 ≤ T ≤ 100)각 테스트 케이스:N: 공항의 수 (2 ≤ N ≤ 100)M: 지원 비용 (0 ≤ M ≤ 10,000)K: 티켓 정보의 수 (0 ≤ K ≤ 10,000)K개의 티켓 정보:u, v: 출발 공항과 도착 공항 (1 ≤ u, v ≤ N)c: .. 2024. 11. 9.
백준 원판 돌리기 [17822] 파이썬(Python) 코드 + 해설 문제 설명반지름이 1부터 N까지인 원판들이 바닥에 놓여 있고, 각 원판에는 M개의 정수가 적혀 있다. 원판들은 중심을 공유하며, 각 원판의 번호는 작은 것부터 큰 것까지 1부터 N까지이다. 각 원판의 위치는 (i,j)로 표현되며, i는 원판의 번호, j는 원판 위의 숫자 위치이다. 원판들은 독립적으로 회전할 수 있으며, 회전은 시계 방향 또는 반시계 방향으로 이루어진다. 회전 후에는 다음과 같은 작업을 수행한다: 인접하면서 수가 같은 것들을 모두 찾는다. 인접한 위치는 다음과 같다: 같은 원판에서 양 옆에 있는 숫자들 같은 위치의 위아래 원판 숫자들 인접하면서 수가 같은 것이 있으면, 해당 수들을 지운다 (0으로 만든다). 없으면, 원판에 적힌 수들의 평균을 구하고, 평균보다 큰 수에서 1을 빼고, 작은.. 2024. 11. 8.
백준 새로운 게임2 [17837] 파이썬(Python) 코드 + 해설 문제 설명재현이는 체스판과 말을 이용하여 새로운 게임을 만들었다. 이 게임은 크기가 N×N인 체스판에서 진행되며, 말은 총 K개가 사용된다. 말은 원판 모양이며, 하나의 말 위에 다른 말을 올릴 수 있다. 체스판의 각 칸은 흰색(0), 빨간색(1), 파란색(2) 중 하나로 색칠되어 있다.게임은 체스판 위에 말을 놓고 시작한다. 말은 1번부터 K번까지 번호가 매겨져 있고, 이동 방향도 미리 정해져 있다. 이동 방향은 오른쪽(1), 왼쪽(2), 위쪽(3), 아래쪽(4) 중 하나이다.각 턴은 1번 말부터 K번 말까지 순서대로 이동시키는 것이다. 한 말이 이동할 때, 그 말 위에 다른 말이 있으면 함께 이동한다. 말의 이동 규칙은 다음과 같다.이동하려는 칸이 흰색인 경우:그 칸으로 이동한다.이동하려는 칸에 말이.. 2024. 11. 7.
728x90