목록Algorithm/백준 알고리즘_Python (125)
alpyrithm_알파이리즘
16486 운동장 한 바퀴 www.acmicpc.net/problem/16486 16486번: 운동장 한 바퀴 첫째 줄에 d1의 값이 주어진다. 둘째 줄에는 d2의 값이 주어진다. (d1, d2의 값은 100,000 이하의 양의 정수) www.acmicpc.net 문제 풀기 전 공부할 것 : 수학, 기하학 풀이 운동장의 둘레를 알아내는 것으로 A, B를 감싸는 원둘레와 C의 가로의 길이 2개를 더하면 된다. C의 가로의 길이가 d1이므로 d1 X 2와 A, B의 둘레의 길이 2 X 3.141592 X d2를 더한다. d1, d2 = int(input()), int(input()) print((d1+d2*3.141592)*2)
14910 오르막 www.acmicpc.net/problem/14910 14910번: 오르막 첫째 줄에 공백으로 구분된 N(1 ≤ N ≤ 1,000,000)개의 정수가 주어진다. 입력으로 주어지는 정수는 -1,000,000보다 크거나 같고, 1,000,000보다 작거나 같은 정수이다. www.acmicpc.net 풀이 for문으로 n개의 정수를 돌면서 앞의 정수보다 작으면 비내림차순이 아니다. def solve(arr): n = len(arr) for i in range(1, n): if arr[i-1] > arr[i]: return False return True arr = list(map(int, input().split())) if solve(arr): print('Good') else: print..
2747 피보나치 수 www.acmicpc.net/problem/2747 2747번: 피보나치 수 피보나치 수는 0과 1로 시작한다. 0번째 피보나치 수는 0이고, 1번째 피보나치 수는 1이다. 그 다음 2번째 부터는 바로 앞 두 피보나치 수의 합이 된다. 이를 식으로 써보면 Fn = Fn-1 + Fn-2 (n ≥ 2)가 www.acmicpc.net 문제 풀기 전 공부할 것 : 수학, 구현 풀이 n = int(input()) dp = [0, 1] for _ in range(2, n+1): dp.append(dp[-1]+dp[-2]) print(dp[n])
16917 양념 반 후라이드 반 www.acmicpc.net/problem/16917 16917번: 양념 반 후라이드 반 현진 치킨에서 판매하는 치킨은 양념 치킨, 후라이드 치킨, 반반 치킨으로 총 세 종류이다. 반반 치킨은 절반은 양념 치킨, 절반은 후라이드 치킨으로 이루어져있다. 양념 치킨 한 마리의 가격은 www.acmicpc.net 풀이 a, b, c, x, y는 각각 양념 치킨 한 마리의 가격, 후라이드 치킨 한 마리의 가격, 반반 치킨 한 마리의 가격, 최소 양념 치킨 마리 수, 최소 후라이드 치킨 마리 수이다. 만약에 양념 치킨 한 마리의 가격 + 후라이드 치킨 한 마리의 가격이 반반 치킨 한 마리의 가격 x 2보다 작다면 반반 치킨이 아닌 각각 한 마리씩 주문하는 것이 최솟값이다. 크다면 ..
16968 차량 번호판 1 www.acmicpc.net/problem/16968 16968번: 차량 번호판 1 00부터 99까지 총 100가지 중에서 00, 11, 22, 33, 44, 55, 66, 77, 88, 99가 불가능하다. www.acmicpc.net 문제 풀기 전 공부할 것 : 수학, 조합론, 백트래킹 풀이 c는 문자가 위치하는 자리이므로 가능한 문자는 26개 d는 숫자가 위치하는 자리이므로 가능한 숫자는 10개 연속해서 나타나는 경우만 고려하면 된다. 연속해서 나타나는 경우 앞에서 사용한 문자 또는 숫자를 사용하지 않아야 하므로 (26-1) 또는 (10-1)의 경우의 수가 있다. nums = {'c':26, 'd':10} car_nums = input() n = len(car_nums) r..
16940 BFS 스페셜 저지 www.acmicpc.net/problem/16940 16940번: BFS 스페셜 저지 올바른 순서는 1, 2, 3, 4와 1, 3, 2, 4가 있다. www.acmicpc.net 문제 풀기 전 공부할 것 : 그래프 이론, 그래프 탐색, 너비 우선 탐색 풀이 1 import sys input = sys.stdin.readline def solve(): n = int(input()) tree = [set() for _ in range(n+1)] tree[0].add(1) for _ in range(n-1): a, b = map(int, input().split()) tree[a].add(b) tree[b].add(a) que = [0] idx = 0 answer = list(..
17103 골드바흐 파티션 www.acmicpc.net/problem/17103 17103번: 골드바흐 파티션 첫째 줄에 테스트 케이스의 개수 T (1 ≤ T ≤ 100)가 주어진다. 각 테스트 케이스는 한 줄로 이루어져 있고, 정수 N은 짝수이고, 2 < N ≤ 1,000,000을 만족한다. www.acmicpc.net 문제 풀기 전 공부할 것 : 수학, 정수론, 소수 판정, 에라토스테네스의 체 풀이 모든 테스트 케이스를 입력받는다. 테스트 케이스에서 가장 큰 값을 기준으로 소수를 찾는다. for문을 돌면서 두 소수의 합이 해당 정수인 경우 개수+1을 한다. 모든 경우를 찾고 출력한다. import sys input = sys.stdin.readline t = int(input()) nums = [in..
17087 숨바꼭질 6 www.acmicpc.net/problem/17087 17087번: 숨바꼭질 6 수빈이는 동생 N명과 숨바꼭질을 하고 있다. 수빈이는 현재 점 S에 있고, 동생은 A1, A2, ..., AN에 있다. 수빈이는 걸어서 이동을 할 수 있다. 수빈이의 위치가 X일때 걷는다면 1초 후에 X+D나 X-D로 이 www.acmicpc.net 문제 풀기 전 공부할 것 : 수학, 정수론, 유클리드 호제법 풀이 수빈이가 x+d나 x-d로 모든 동생들을 찾을 수 있어야 한다. 수빈이가 모든 동생을 찾기 위해서 수빈이 현재 위치와 동생들의 위치의 차를 구한다. (수빈 위치 - 동생 위치)의 절댓값들의 최대공약수가 모든 동생을 찾기 위한 d의 최댓값이다. def gcd(a, b): while b: mod..