[파이썬(Python)] 백준 2193번 이친수
·
코딩테스트 대비
백준 2193번: 이친수문제 바로 가기📌 문제0과 1로만 이루어진 수를 이진수라 한다. 이러한 이진수 중 특별한 성질을 갖는 것들이 있는데, 이들을 이친수(pinary number)라 한다. 이친수는 다음의 성질을 만족한다. 이친수는 0으로 시작하지 않는다. 이친수에서는 1이 두 번 연속으로 나타나지 않는다. 즉, 11을 부분 문자열로 갖지 않는다. 예를 들면 1, 10, 100, 101, 1000, 1001 등이 이친수가 된다. 하지만 0010101이나 101101은 각각 1, 2번 규칙에 위배되므로 이친수가 아니다. N(1 ≤ N ≤ 90)이 주어졌을 때, N자리 이친수의 개수를 구하는 프로그램을 작성하시오. 입력첫째 줄에 N이 주어진다.출력첫째 줄에 N자리 이친수의 개수를 출력한다.     📝 ..
[파이썬(Python)] 백준 10844번 쉬운 계단 수
·
코딩테스트 대비
백준 10844번: 쉬운 계단 수문제 바로 가기📌 문제45656이란 수를 보자. 이 수는 인접한 모든 자리의 차이가 1이다. 이런 수를 계단 수라고 한다. N이 주어질 때, 길이가 N인 계단 수가 총 몇 개 있는지 구해보자. 0으로 시작하는 수는 계단수가 아니다.입력첫째 줄에 N이 주어진다. N은 1보다 크거나 같고, 100보다 작거나 같은 자연수이다. 출력첫째 줄에 정답을 1,000,000,000으로 나눈 나머지를 출력한다.     📝 아이디어 이 문제는 계단 수의 개수를 구하는 문제입니다. 계단 수란 각 자리의 숫자 차이가 1인 수를 말합니다. 예를 들어, 숫자 45656은 다음과 같이 자릿수의 차이가 모두 1이므로 계단 수입니다.$$4 \xrightarrow{+1} 5 \xrightarrow{+..
[파이썬(Python)] 백준 15990번 1, 2, 3 더하기 5
·
코딩테스트 대비
백준 15990번: 1, 2, 3 더하기 5문제 바로 가기📌 문제정수 4를 1, 2, 3의 합으로 나타내는 방법은 총 3가지가 있다. 합을 나타낼 때는 수를 1개 이상 사용해야 한다. 단, 같은 수를 두 번 이상 연속해서 사용하면 안 된다. 1+2+1 1+3 3+1 정수 n이 주어졌을 때, n을 1, 2, 3의 합으로 나타내는 방법의 수를 구하는 프로그램을 작성하시오.입력첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있고, 정수 n이 주어진다. n은 양수이며 100,000보다 작거나 같다.출력각 테스트 케이스마다, n을 1, 2, 3의 합으로 나타내는 방법의 수를 1,000,000,009로 나눈 나머지를 출력한다.     📝 아이디어이 문제는 정수 $n$을 1,..
[파이썬(Python)] 백준 16194번 카드 구매하기 2
·
코딩테스트 대비
백준 16194번: 카드 구매하기 2문제 바로 가기📌 문제요즘 민규네 동네에서는 스타트링크에서 만든 PS카드를 모으는 것이 유행이다. PS카드는 PS(Problem Solving)분야에서 유명한 사람들의 아이디와 얼굴이 적혀있는 카드이다. 각각의 카드에는 등급을 나타내는 색이 칠해져 있고, 다음과 같이 8가지가 있다. 전설카드 레드카드 오렌지카드 퍼플카드 블루카드 청록카드 그린카드 그레이카드 카드는 카드팩의 형태로만 구매할 수 있고, 카드팩의 종류는 카드 1개가 포함된 카드팩, 카드 2개가 포함된 카드팩, ... 카드 $N$개가 포함된 카드팩과 같이 총 $N$가지가 존재한다. 민규는 지난주에 너무 많은 돈을 써 버렸다. 그래서 오늘은 돈을 최소로 지불해서 카드 $N$개를 구매하려고 한다. 카드가 $i$..
[파이썬(Python)] 백준 11052번 카드 구매하기
·
코딩테스트 대비
백준 11052번: 카드 구매하기문제 바로 가기📌 문제요즘 민규네 동네에서는 스타트링크에서 만든 PS카드를 모으는 것이 유행이다. PS카드는 PS(Problem Solving)분야에서 유명한 사람들의 아이디와 얼굴이 적혀있는 카드이다. 각각의 카드에는 등급을 나타내는 색이 칠해져 있고, 다음과 같이 8가지가 있다. 전설카드 레드카드 오렌지카드 퍼플카드 블루카드 청록카드 그린카드 그레이카드 카드는 카드팩의 형태로만 구매할 수 있고, 카드팩의 종류는 카드 1개가 포함된 카드팩, 카드 2개가 포함된 카드팩, ... 카드 N개가 포함된 카드팩과 같이 총 N가지가 존재한다. 민규는 카드의 개수가 적은 팩이더라도 가격이 비싸면 높은 등급의 카드가 많이 들어있을 것이라는 미신을 믿고 있다. 따라서, 민규는 돈을 최..
[파이썬(Python)] 백준 9095번 1, 2, 3 더하기
·
코딩테스트 대비
백준 9095번: 1, 2, 3 더하기문제 바로 가기📌 문제정수 4를 1, 2, 3의 합으로 나타내는 방법은 총 7가지가 있다. 합을 나타낼 때는 수를 1개 이상 사용해야 한다. 1+1+1+1 1+1+2 1+2+1 2+1+1 2+2 1+3 3+1 정수 n이 주어졌을 때, n을 1, 2, 3의 합으로 나타내는 방법의 수를 구하는 프로그램을 작성하시오.입력첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있고, 정수 n이 주어진다. n은 양수이며 11보다 작다.출력각 테스트 케이스마다, n을 1, 2, 3의 합으로 나타내는 방법의 수를 출력한다.    📝 아이디어주어진 문제는 정수 $n$을 1, 2, 3의 합으로 나타내는 모든 경우의 수를 구하는 문제입니다. 이 문제는..
[파이썬(Python)] 백준 11727번 2×n 타일링 2
·
코딩테스트 대비
백준 11727번: 2×n 타일링 2문제 바로 가기📌 문제2×n 직사각형을 1×2, 2×1과 2×2 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오. 아래 그림은 2×17 직사각형을 채운 한가지 예이다.입력첫째 줄에 n이 주어진다. (1 ≤ n ≤ 1,000)출력첫째 줄에 2×n 크기의 직사각형을 채우는 방법의 수를 10,007로 나눈 나머지를 출력한다.    📝 아이디어 이 문제는 $2 \times n$ 크기의 직사각형을 $1 \times 2$, $2 \times 1$, $2 \times 2$ 타일로 채우는 방법의 수를 구하는 것입니다.  아래의 그림처럼 $2 \times n$ 직사각형을 채우는 방법은 마지막 타일의 배치 방식에 따라 결정됩니다.   1. 마지막 타일을 $2 \times 1$..
[파이썬(Python)] 백준 11726번 2×n 타일링
·
코딩테스트 대비
백준 11726번: 2×n 타일링문제 바로 가기📌 문제2×n 크기의 직사각형을 1×2, 2×1 타일로 채우는 방법의 수를 구하는 프로그램을 작성하시오. 아래 그림은 2×5 크기의 직사각형을 채운 한 가지 방법의 예이다.   입력첫째 줄에 n이 주어진다. (1 ≤ n ≤ 1,000) 출력첫째 줄에 2×n 크기의 직사각형을 채우는 방법의 수를 10,007로 나눈 나머지를 출력한다.    📝 아이디어$2 \times n$ 크기의 직사각형을 $1 \times 2$와 $2 \times 1$ 타일로 채우는 방법의 수를 구하는 문제입니다. 이 문제는 동적 프로그래밍(DP)을 사용하여 효율적으로 해결할 수 있습니다. 동적 프로그래밍은 문제를 작은 부분 문제로 나누어 해결하고 결과를 저장하여 중복 계산 방지하는 방법..
[파이썬(Python)] 백준 1463번 1로 만들기
·
코딩테스트 대비
백준 1463번: 1로 만들기문제 바로 가기📌 문제정수 X에 사용할 수 있는 연산은 다음과 같이 세 가지 이다. 1. X가 3으로 나누어 떨어지면, 3으로 나눈다. 2. X가 2로 나누어 떨어지면, 2로 나눈다. 3. 1을 뺀다. 정수 N이 주어졌을 때, 위와 같은 연산 세 개를 적절히 사용해서 1을 만들려고 한다. 연산을 사용하는 횟수의 최솟값을 출력하시오. 입력첫째 줄에 1보다 크거나 같고, 106보다 작거나 같은 정수 N이 주어진다.출력첫째 줄에 연산을 하는 횟수의 최솟값을 출력한다.   📝 아이디어이 문제를 해결하기 위해 동적 프로그래밍(DP)을 사용합니다. 동적 프로그래밍은 복잡한 문제를 간단한 여러 개의 작은 하위 문제로 나누어 효율적으로 해결하는 방법입니다. 우선, DP 테이블을 정의합니..
[파이썬(Python)] 백준 11653번 소인수 분해
·
코딩테스트 대비
백준 11653번: 소인수 분해문제 바로 가기📌 문제정수 N이 주어졌을 때, 소인수분해하는 프로그램을 작성하시오.입력첫째 줄에 정수 N (1 ≤ N ≤ 10,000,000)이 주어진다.출력N의 소인수분해 결과를 한 줄에 하나씩 오름차순으로 출력한다. N이 1인 경우 아무것도 출력하지 않는다.   📝 문제 접근 방법문제 분석문제의 목표는 주어진 숫자 $N$을 소인수분해하여 모든 소인수를 출력하는 것입니다. 소인수분해란 $N$을 소수들의 곱으로 표현하는 것을 의미합니다. 예를 들어 $N = 72$는 $2 \times 2 \times 2\times 3 \times 3$으로 표현됩니다.  문제에서 주어진 제약 조건은 다음과 같습니다. $N$의 범위는 $1 \leq N \leq 10,000,000$입니다. $..