반응형

개발 연습장/백준 문제풀이 221

[파이썬, Python] 백준 2609: 최대공약수와 최소공배수

문제 https://www.acmicpc.net/problem/2609 2609번: 최대공약수와 최소공배수 첫째 줄에는 입력으로 주어진 두 수의 최대공약수를, 둘째 줄에는 입력으로 주어진 두 수의 최소 공배수를 출력한다. www.acmicpc.net 코드 import math x, y = map(int, input().split()) print(math.gcd(x, y)) print(math.lcm(x, y)) 설명 math 모듈을 활용하여 두 수의 최대공약수와 최소공배수를 출력했다.

[파이썬, Python] 백준 1931: 회의실 배정

문제 https://www.acmicpc.net/problem/1931 1931번: 회의실 배정 (1,4), (5,7), (8,11), (12,14) 를 이용할 수 있다. www.acmicpc.net 코드 import sys input = sys.stdin.readline n = int(input()) res = [] for i in range(n): a, b = map(int, input().split()) res.append((a,b)) res.sort(key=lambda x: (x[1],x[0])) cnt = 0 end_time = 0 for i,j in res: if i >= end_time: cnt += 1 end_time = j print(cnt) 설명 우선 각 값을 입력받고, key를 이용해..

[파이썬, Python] 백준 11047: 동전 0

문제 https://www.acmicpc.net/problem/11047 11047번: 동전 0 첫째 줄에 N과 K가 주어진다. (1 ≤ N ≤ 10, 1 ≤ K ≤ 100,000,000) 둘째 줄부터 N개의 줄에 동전의 가치 Ai가 오름차순으로 주어진다. (1 ≤ Ai ≤ 1,000,000, A1 = 1, i ≥ 2인 경우에 Ai는 Ai-1의 배수) www.acmicpc.net 코드 import sys input = sys.stdin.readline n,k = map(int,input().split()) coin = [] ans = 0 for _ in range(n): coin.append(int(input())) coin.sort(reverse = True) for i in coin: if k >= ..

[파이썬, Python] 백준 1037: 약수

문제 https://www.acmicpc.net/problem/1037 1037번: 약수 첫째 줄에 N의 진짜 약수의 개수가 주어진다. 이 개수는 50보다 작거나 같은 자연수이다. 둘째 줄에는 N의 진짜 약수가 주어진다. 1,000,000보다 작거나 같고, 2보다 크거나 같은 자연수이고, 중복되 www.acmicpc.net 코드 import sys input = sys.stdin.readline n = int(input()) num = list(map(int, input().split())) if n == 1: print(num[0]**2) else: print(min(num)*max(num)) 설명 일반적인 입력의 경우 num 값의 최솟값과 최댓값의 곱이 정답이다. 예제 2와 같은 경우가 예외적인 케이..

[파이썬, Python]] 백준 5086: 배수와 약수

문제 https://www.acmicpc.net/problem/5086 5086번: 배수와 약수 각 테스트 케이스마다 첫 번째 숫자가 두 번째 숫자의 약수라면 factor를, 배수라면 multiple을, 둘 다 아니라면 neither를 출력한다. www.acmicpc.net 코드 while True: a, b = map(int, input().split()) if a == 0: break if b % a == 0: print('factor') elif a % b == 0: print('multiple') else: print('neither') 설명 조건문을 이용하여 간단하게 풀이가 가능한 문제였다. a와 b가 0일 때, 종료해야 하므로 a==0에 break문을 넣어주었다.

[파이썬, Python] 백준 11659: 구간 합 구하기 4

문제 https://www.acmicpc.net/problem/11659 11659번: 구간 합 구하기 4 첫째 줄에 수의 개수 N과 합을 구해야 하는 횟수 M이 주어진다. 둘째 줄에는 N개의 수가 주어진다. 수는 1,000보다 작거나 같은 자연수이다. 셋째 줄부터 M개의 줄에는 합을 구해야 하는 구간 i와 j www.acmicpc.net 코드 import sys input = sys.stdin.readline n, m = map(int,input().split()) num = list(map(int, input().split())) for i in range(n-1): num[i+1] += num[i] num = [0] + num for _ in range(m): i, j = map(int,input(..

[파이썬, Python] 백준 1463: 1로 만들기

문제 https://www.acmicpc.net/problem/1463 1463번: 1로 만들기 첫째 줄에 1보다 크거나 같고, 106보다 작거나 같은 정수 N이 주어진다. www.acmicpc.net 코드 n = int(input()) d = [0] * (n+1) for i in range(2, n+1): d[i] = d[i-1] + 1 if i % 3 == 0: d[i] = min(d[i], d[i//3]+1) if i % 2 == 0: d[i] = min(d[i], d[i//2]+1) print(d[n]) 설명 우선 n+1 개 만큼의 0으로 이루어진 리스트를 만들어준다. 이후 i번째의 값을 i-1번째에 1을 더해준 값으로 우선 지정해준다. 만약 i가 2혹은 3으로 나누어지는 수라면 이 수와 2혹은 ..

[파이썬, Python] 백준 2579: 계단 오르기

문제 https://www.acmicpc.net/problem/2579 2579번: 계단 오르기 계단 오르기 게임은 계단 아래 시작점부터 계단 꼭대기에 위치한 도착점까지 가는 게임이다. 과 같이 각각의 계단에는 일정한 점수가 쓰여 있는데 계단을 밟으면 그 계단에 쓰여 있는 점 www.acmicpc.net 코드 n = int(input()) score = [0 for _ in range(n+1)] stair = [0 for _ in range(n+1)] for i in range(1, n+1): stair[i] = int(input()) score[1] = stair[1] for i in range(2, n+1): if i == 2: score[i] = score[1] + stair[2] elif i ==..

[파이썬, Python] 백준 9461: 파도반 수열

문제 https://www.acmicpc.net/problem/9461 9461번: 파도반 수열 오른쪽 그림과 같이 삼각형이 나선 모양으로 놓여져 있다. 첫 삼각형은 정삼각형으로 변의 길이는 1이다. 그 다음에는 다음과 같은 과정으로 정삼각형을 계속 추가한다. 나선에서 가장 긴 변의 www.acmicpc.net 코드 li = [0 for i in range(101)] li[1],li[2],li[3] = 1, 1, 1 for i in range(4, 101): li[i] = li[i-2] + li[i-3] t = int(input()) for _ in range(t): n = int(input()) print(li[n]) 설명 다이나믹 프로그래밍으로 규칙을 찾아서 구현을 하는 문제이다. 4번째 삼각형부터,..

[파이썬, Python] 백준 24416: 피보나치 수 1

문제 https://www.acmicpc.net/problem/24416 24416번: 알고리즘 수업 - 피보나치 수 1 오늘도 서준이는 동적 프로그래밍 수업 조교를 하고 있다. 아빠가 수업한 내용을 학생들이 잘 이해했는지 문제를 통해서 확인해보자. 오늘은 n의 피보나치 수를 재귀호출과 동적 프로그래밍 www.acmicpc.net 코드 import sys input = sys.stdin.readline n = int(input()) cnt_2 = 0 def fib(n): if n == 1 or n == 2: return 1 else: return fib(n-1) + fib(n-2) li = [1 for i in range(41)] for i in range(2, n): li[i] = li[i-1] + l..

반응형