본문 바로가기

Algorithm Problems

(212)
[백준/Python] 1644번: 소수의 연속합 문제https://www.acmicpc.net/problem/1644 1644번: 소수의 연속합첫째 줄에 자연수 N이 주어진다. (1 ≤ N ≤ 4,000,000)www.acmicpc.net문제 요약자연수 N이 주어졌을 때, 연속된 소수의 합으로 나타낼 수 있는 경우의 수를 출력한다. ex) 3 = 3 => 한 가지 41 = 2 + 3 + 5 + 7 + 11 + 13 = 11 + 13 + 17 = 41 => 세 가지코드import math n = int(input()) # 체 알고리즘을 이용하여 소수로 구성된 리스트 구하기 pri_arr = [True for _ in range(n + 1)] # n 까지 소수인지 아닌지를 판별하는 리스트 (초기: 소수 = True) for i in range(2, int..
[백준/Python] 2110번: 공유기 설치 문제 https://www.acmicpc.net/problem/2110 2110번: 공유기 설치 첫째 줄에 집의 개수 N (2 ≤ N ≤ 200,000)과 공유기의 개수 C (2 ≤ C ≤ N)이 하나 이상의 빈 칸을 사이에 두고 주어진다. 둘째 줄부터 N개의 줄에는 집의 좌표를 나타내는 xi (0 ≤ xi ≤ 1,000,000,000)가 www.acmicpc.net 문제 요약 도현이의 집 N개가 수직선 위에 있고 공유기 C개를 설치하려고 할 때, 가장 인접한 공유기 사이의 거리의 최댓값을 출력한다. + 한 집에는 공유기를 하나만 설치할 수 있다. 코드 def binSearch(): global start, end, ans while start = cur + mid: # 현재 집에서 다음 집의 거리가 m..
[백준/Python] 2805번: 나무 자르기 문제 https://www.acmicpc.net/problem/2805 2805번: 나무 자르기 첫째 줄에 나무의 수 N과 상근이가 집으로 가져가려고 하는 나무의 길이 M이 주어진다. (1 ≤ N ≤ 1,000,000, 1 ≤ M ≤ 2,000,000,000) 둘째 줄에는 나무의 높이가 주어진다. 나무의 높이의 합은 항상 M보 www.acmicpc.net 문제 요약 상근이는 N 그루의 나무를 절단기로 높이를 지정하고 잘라 M미터의 나무를 구하려고 한다. 예를 들어 한 줄에 연속해 있는 나무의 높이가 20, 15, 10, 17이라고 할 때, 상근이가 높이를 15로 지정했다면, 나무를 자른 뒤의 높이는 15, 15, 10, 15가 될 것이고 상근이는 길이가 5인 나무와 2인 나무를 구할 수 있다. 적어도 M..
[백준/Python] 9657번: 돌 게임 3 문제 https://www.acmicpc.net/problem/9657 9657번: 돌 게임 3 상근이가 게임을 이기면 SK를, 창영이가 게임을 이기면 CY을 출력한다. www.acmicpc.net 문제 요약 탁자 위에 N개의 돌이 있을 때, 상근이와 창영이는 턴을 번갈아가면서 돌을 가져간다. 마지막 돌을 가져가는 사람이 승리한다. 돌은 1개, 3개, 4개를 가져갈 수 있다. 두 사람이 완벽하게 게임을 했을 때, 이기는 사람을 출력한다. 코드 N = int(input()) dp = [0] * 1001 # dp[i]: i개의 돌이 주어졌을 때, 0이면 패배, 1이면 승리 (i개의 돌로 시작) dp[1] = 1 dp[2] = 0 dp[3] = 1 dp[4] = 1 for i in range(5, 1001):..
[백준/Python] 16170번: 오늘의 날짜는? 문제 https://www.acmicpc.net/problem/16170 16170번: 오늘의 날짜는? 지금 시각을 UTC+0(세계 표준시)을 기준으로 나타냈을 때의 연도, 월, 일을 한 줄에 하나씩 순서대로 출력한다. www.acmicpc.net 문제 요약 현재 시각을 연도, 월, 일을 한 줄에 하나씩 출력한다. 코드 import datetime today = datetime.date.today() year = today.year month = today.month day = today.day print(year) print(month) print(day) 코드 설명 1. datetime 모듈을 import하고, today 인스턴스를 생성한다. 2. today 인스턴스의 필드를 이용하여 형식에 맞게 출..
[백준/Python] 15990번: 1, 2, 3 더하기 5 문제https://www.acmicpc.net/problem/15990 15990번: 1, 2, 3 더하기 5각 테스트 케이스마다, n을 1, 2, 3의 합으로 나타내는 방법의 수를 1,000,000,009로 나눈 나머지를 출력한다.www.acmicpc.net문제 요약정수 n이 주어졌을 때, n을 1, 2, 3의 합으로 나타내는 방법의 수를 1000000009로 나눈 나머지를 출력한다. + 같은 수를 두 번 이상 연속해서 사용하면 안된다.코드T = int(input()) dp = [[0, 0, 0] for _ in range(100001)] # dp[i][0]: i를 1, 2, 3으로 나타낸 수 중 1로 끝나는 경우의 수 # dp[i][1]: i를 1, 2, 3으로 나타낸 수 중 2로 끝나는 경우의 수 ..