1. 문제설명문제 URL : https://www.acmicpc.net/problem/1343 이 문제는 주어진 문자열에서 ‘X’로 이루어진 모든 부분을 ‘AAAA’ 또는 ‘BB’로 대체하는 문제입니다. ‘X’를 덮을 수 있는 방법은 두 가지뿐이며, 4개의 연속된 ‘X’는 ‘AAAA’로, 2개의 연속된 ‘X’는 ‘BB’로 변환할 수 있습니다. 그 외의 경우에는 덮을 수 없기 때문에 불가능한 경우를 처리해야 합니다. 예를 들어, 입력이 “XX….XXXX”일 경우, 가능한 변환은 “BB….AAAA”입니다. 만약 덮을 수 없는 패턴이 존재할 경우, -1을 출력합니다.2. 정답코드import sysinput = sys.stdin.readline# 보드를 입력받아 리스트로 변환board = list(input()..
알고리즘
1. 문제설명문제URL : https://www.acmicpc.net/problem/1748 이 문제는 1부터 N까지의 모든 숫자를 이어서 썼을 때, 그 숫자의 총 자릿수를 구하는 문제입니다. 예를 들어, N이 12일 경우, 1부터 12까지의 숫자를 이어서 쓰면 “123456789101112”가 되며, 이때 총 자릿수는 15가 됩니다.2. 정답코드import sysinput = sys.stdin.readline# 입력을 받아서 정수형으로 변환N = int(input())# 자리수(i)와 결과값(ans)를 초기화i = 1ans = 0while True: # 현재 자리수에서의 마지막 수(end)를 계산 end = int('9' * i) # 현재 자리수에서의 시작 수(start)를 계산 ..
안녕하세요! 이번 포스트에서는 백준 1766번 문제 “문제집”을 함께 풀어보겠습니다. 이 문제는 문제를 풀기 위한 순서를 정하는 문제로, 위상 정렬을 활용하여 해결할 수 있습니다. 문제를 분석하고 접근 방법을 정리한 후, 최종적인 정답 코드를 확인해 보겠습니다. 문제 URL: https://www.acmicpc.net/problem/1766 1. 문제 설명“문제집” 문제는 문제를 풀기 위한 순서를 정하는 문제입니다. 문제를 풀기 위해 다음 규칙을 따라야 합니다: 1. 어떤 문제를 풀기 위해 다른 문제를 먼저 풀어야 하는 경우가 있습니다. 2. 이러한 문제들 간의 우선순위를 고려하여 모든 문제를 풀 수 있는 순서를 찾아야 합니다. 3. 여러 방법이 존재할 경우, 문제 번호가 더 작은 문제를 우선 풀어야 ..
이 문제는 주어진 계단을 오를 때 얻을 수 있는 최대 점수를 구하는 문제입니다. 계단은 특정 규칙에 따라 올라야 하며, 동적 계획법(Dynamic Programming)을 사용하여 해결할 수 있습니다. 문제를 분석하고 접근 방법을 정리한 후, 최종적인 정답 코드를 확인해 보겠습니다. 1. 문제 설명백준 2579번 문제 “계단 오르기”는 주어진 계단을 오르면서 얻을 수 있는 최대 점수를 구하는 문제입니다. 계단을 오를 때 다음 규칙을 따라야 합니다: 1) 계단은 한 번에 한 계단 또는 두 계단씩 오를 수 있습니다. 2) 연속된 세 개의 계단을 모두 밟아서는 안 됩니다. 3) 마지막 계단은 반드시 밟아야 합니다. 2. 문제 접근법이 문제를 해결하기 위해 동적 계획법을 사용합니다. 핵심 아이디어는 각 계단에..
백준 1463번 문제인 “1로 만들기” 문제를 해결하는 방법에 대해 작성해 보겠습니다. 이 문제는 주어진 정수 N을 1로 만들기 위해 필요한 최소한의 연산 횟수를 찾는 문제로, 동적 계획법(Dynamic Programming)을 사용하여 해결할 수 있습니다. 문제를 분석하고 접근 방법을 정리한 후, 최종적인 정답 코드를 확인해 보겠습니다. 문제 URL: https://www.acmicpc.net/problem/1463 1. 문제 설명백준 1463번 문제 “1로 만들기”는 주어진 정수 N을 1로 만들기 위해 최소한의 연산을 사용하는 문제입니다. 가능한 연산은 다음과 같습니다: 1. N이 3으로 나누어 떨어지면, 3으로 나누기. 2. N이 2로 나누어 떨어지면, 2로 나누기. 3. 1을 빼기. 각각의 연산..