본문 바로가기

분류 전체보기

(308)
[백준/python] 14002번: 가장 긴 증가하는 부분 수열 4 문제 https://www.acmicpc.net/problem/14002 14002번: 가장 긴 증가하는 부분 수열 4 수열 A가 주어졌을 때, 가장 긴 증가하는 부분 수열을 구하는 프로그램을 작성하시오. 예를 들어, 수열 A = {10, 20, 10, 30, 20, 50} 인 경우에 가장 긴 증가하는 부분 수열은 A = {10, 20, 10, 30, 20, 50} 이 www.acmicpc.net 문제 요약 수열이 주어졌을 때 가장 긴 증가하는 부분 수열과 그 수열의 길이를 출력한다. 코드 import sys input = __import__('sys').stdin.readline N = int(input()) # 입력 받을 수열의 길이 arr = list(map(int, input().rstrip()...
[백준/python] 9465번: 스티커 문제 https://www.acmicpc.net/problem/9465 9465번: 스티커 첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스의 첫째 줄에는 n (1 ≤ n ≤ 100,000)이 주어진다. 다음 두 줄에는 n개의 정수가 주어지며, 각 정수는 그 위치에 해당하는 스티커의 www.acmicpc.net 문제 요약 2행 n열로 배치된 2n개의 스티커들은 각 점수들을 갖고 있다. 이 스티커들 중 점수의 합이 최대가 되면서 변을 공유하지 않은 스티커 집합을 구하고, 그 집합의 점수 합을 출력한다. 코드 import sys input = __import__('sys').stdin.readline T = int(input()) for _ in range(T): n = int(input()..
[백준/python] 1463번: 1로 만들기 문제 https://www.acmicpc.net/problem/1463 1463번: 1로 만들기 첫째 줄에 1보다 크거나 같고, 106보다 작거나 같은 정수 N이 주어진다. www.acmicpc.net 문제 요약 정수 N이 주어졌을 때, 세 개의 연산을 적절히 사용해서 1을 만들어야한다. 연산을 사용하는 횟수의 최솟값을 출력한다. 정수 N에 사용할 수 있는 연산 1. N이 3으로 나누어 떨어지면, 3으로 나눈다. 2. N이 2로 나누어 떨어지면, 2로 나눈다. 3. 1을 뺀다. 코드 import sys input = __import__('sys').stdin.readline N = int(input()) dp = [1000000] * (N + 1) if N == 1: print(0) elif N == 2..
[백준/python] 14916번: 거스름돈 문제 https://www.acmicpc.net/problem/14916 14916번: 거스름돈 첫째 줄에 거스름돈 액수 n(1 ≤ n ≤ 100,000)이 주어진다. www.acmicpc.net 문제 요약 거스름돈 액수 n을 입력 받고, 2원과 5원 두 종류의 동전만으로 지불할 때, 최소한으로 사용할 수 있는 동전 개수를 출력한다. + 거슬러 줄 수 없으면 -1을 출력한다. 코드 import sys input = __import__('sys').stdin.readline n = int(input()) # 거스름돈 액수 if n == 1: print(-1) elif n == 2: print(1) elif n == 3: print(-1) elif n == 4: print(2) else: dp = [1000..
[백준/python] 15624번: 피보나치 수 7 문제 https://www.acmicpc.net/problem/15624 15624번: 피보나치 수 7 첫째 줄에 n번째 피보나치 수를 1,000,000,007으로 나눈 나머지를 출력한다. www.acmicpc.net 문제 요약 n이 주어졌을 때 n번째 피보나치 수를 1,000,000,007로 나눈 나머지를 출력한다. 코드 import sys input = __import__('sys').stdin.readline n = int(input()) dp = [0, 1] for i in range(2, n + 1): dp.append((dp[i - 1] + dp[i - 2]) % 1000000007) print(dp[n]) 코드 설명 N의 범위가 0부터 1,000,000이므로 큰 피보나치 수를 구해야한다. 파..
[백준/python] 15684번: 사다리 조작 문제 https://www.acmicpc.net/problem/15684 15684번: 사다리 조작 사다리 게임은 N개의 세로선과 M개의 가로선으로 이루어져 있다. 인접한 세로선 사이에는 가로선을 놓을 수 있는데, 각각의 세로선마다 가로선을 놓을 수 있는 위치의 개수는 H이고, 모든 세로선 www.acmicpc.net 문제 요약 N개의 세로선과 M개의 가로선으로 이루어져 있는 사다리 게임이 있다. 가로선을 놓을 수 있는 점선의 개수는 H이다. 가로선을 추가해서 i번 세로선의 결과가 i번이 나오도록 하기 위해 필요한 가로선 개수의 최소값을 출력한다. 가장 위에 있는 점선의 번호와 가장 왼쪽에 있는 세로선의 번호는 1번이다. + 가로선은 두 개이상 연속할 수 없다. 코드 import sys input = _..