목록Algorithm/백준 알고리즘_Python (125)
alpyrithm_알파이리즘
13241 최소공배수 www.acmicpc.net/problem/13241 13241번: 최소공배수 정수 B에 0보다 큰 정수인 N을 곱해 정수 A를 만들 수 있다면, A는 B의 배수이다. 예: 10은 5의 배수이다 (5*2 = 10) 10은 10의 배수이다(10*1 = 10) 6은 1의 배수이다(1*6 = 6) 20은 1, 2, 4,5,10,20의 배수이다. 다� www.acmicpc.net 문제 풀기 전 공부할 것 : 수학, 정수론, 유클리드 호제법 풀이 두 수를 a, b로 입력받는다. a와 b의 최소공배수는 a x b / gcd(a, b)[a, b의 최대공약수]이다. 따라서 a, b의 최대공약수를 함수 gcd를 이용해서 구한다. 그리고 a x b / gcd(a, b)를 출력한다. a, b = map..
1788 피보나치 수의 확장 www.acmicpc.net/problem/1788 1788번: 피보나치 수의 확장 첫째 줄에 F(n)이 양수이면 1, 0이면 0, 음수이면 -1을 출력한다. 둘째 줄에는 F(n)의 절댓값을 출력한다. 이 수가 충분히 커질 수 있으므로, 절댓값을 1,000,000,000으로 나눈 나머지를 출력한다. www.acmicpc.net 문제 풀기 전 공부할 것 : 수학, 다이나믹 프로그래밍 풀이 n을 양수, 0, 음수일 때 나눠서 계산한다. n이 양수일 때, 1, 1, 2, 3, 5, 8, 13, ... 으로 피보나치 수이다. n이 음수일 때, 1, -1, 2, -3, 5, -8, ... 으로 피보나치 수이다. n이 양수라고 가정하고 피보나치 배열을 구한다. n이 음수일 때 그리고 2..
13305 주유소 www.acmicpc.net/problem/13305 13305번: 주유소 표준 입력으로 다음 정보가 주어진다. 첫 번째 줄에는 도시의 개수를 나타내는 정수 N(2 ≤ N ≤ 100,000)이 주어진다. 다음 줄에는 인접한 두 도시를 연결하는 도로의 길이가 제일 왼쪽 도로부터 N-1 www.acmicpc.net 문제 풀기 전 공부할 것 : 그리디 알고리즘 풀이 1 도시의 개수와 도로의 길이, 주유소의 리터당 가격을 n, roads, costs에 입력받는다. 두 번째 도시로 가기 위해서 무조건 첫 번째에서 주유를 해야 한다. 첫 번째에서 두 번째 도시로 가는 도로의 길이 * 첫 번째 도시에서의 주유소의 리터당 가격을 더한다. for문을 돌면서 지금까지 주유 가격보다 이번 도시에서의 가격이..
4796 캠핑 www.acmicpc.net/problem/4796 4796번: 캠핑 입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 한 줄로 이루어져 있고, L, P, V를 순서대로 포함하고 있다. 모든 입력 정수는 int범위이다. 마지막 줄에는 0이 3개 주어진다. www.acmicpc.net 문제 풀기 전 공부할 것 : 수학, 그리디 알고리즘, 사칙연산 풀이 입력이 여러 개의 테스트 케이스로 이루어져 있기 때문에 while문으로 반복해서 l, p, v를 입력받는다. 만약 l, p, v가 모두 0인 경우 break로 while문을 빠져나온다. 휴가의 v일 중 (v//p)만큼 l일을 온전히 캠핑장을 이용할 수 있다. 휴가의 v일 중 (v%p)에서 l과 작은 일만큼 캠핑장을 이용할 수..
9086 문자열 www.acmicpc.net/problem/9086 9086번: 문자열 입력의 첫 줄에는 테스트 케이스의 개수 T(1 ≤ T ≤ 10)가 주어진다. 각 테스트 케이스는 한 줄에 하나의 문자열이 주어진다. 문자열은 알파벳 A~Z 대문자로 이루어지며 알파벳 사이에 공백은 없으 www.acmicpc.net 문제 풀기 전 공부할 것 : 구현, 문자열 풀이 import sys input = sys.stdin.readline t = int(input()) for _ in range(t): string = input().rstrip() print(string[0]+string[-1])
1259 팰린드롬수 www.acmicpc.net/problem/1259 1259번: 팰린드롬수 입력은 여러 개의 테스트 케이스로 이루어져 있으며, 각 줄마다 1 이상 99999 이하의 정수가 주어진다. 입력의 마지막 줄에는 0이 주어지며, 이 줄은 문제에 포함되지 않는다. www.acmicpc.net 문제 풀기 전 공부할 것 : 구현, 문자열 풀이 여러 개의 테스트 케이스로 이루어져 있으므로 while문을 이용하여 입력을 반복한다. 입력이 0이라면 break를 통해 while문을 빠져나온다. 입력이 0이 아니라면 뒤에서 읽어도 똑같은 단어인지 확인하고 'yes'/'no'를 출력한다. import sys input = sys.stdin.readline while True: n = int(input()) i..
10610 30 www.acmicpc.net/problem/10610 10610번: 30 어느 날, 미르코는 우연히 길거리에서 양수 N을 보았다. 미르코는 30이란 수를 존경하기 때문에, 그는 길거리에서 찾은 수에 포함된 숫자들을 섞어 30의 배수가 되는 가장 큰 수를 만들고 싶어한�� www.acmicpc.net 문제 풀기 전 공부할 것 : 수학, 정렬, 정수론 풀이 30의 배수가 되려면 10의 배수인지, 3의 배수인지를 확인하면 된다. 10의 배수 확인 방법 : 일의 자리 숫자가 0이면 된다. 3의 배수 확인 방법 : 모든 자리 숫자의 합이 3으로 나누어 떨어지면 된다. 이때 가장 큰 30의 배수는 큰 숫자대로 정렬하는 것이다. n = int(input()) nums = list(str(n)) num..
1969 DNA www.acmicpc.net/problem/1969 1969번: DNA DNA란 어떤 유전물질을 구성하는 분자이다. 이 DNA는 서로 다른 4가지의 뉴클레오티드로 이루어져 있다(Adenine, Thymine, Guanine, Cytosine). 우리는 어떤 DNA의 물질을 표현할 때, 이 DNA를 이루는 뉴클레오� www.acmicpc.net 문제 풀기 전 공부할 것 : 브루트포스 알고리즘 풀이 Hamming Distance의 합이 가장 작은 DNA 중 사전 순으로 가장 앞서는 것을 구하는 것이므로 같은 위치에 있는 DNA를 비교하면 된다. 같은 위치에 있는 DNA 중 가장 많은 뉴클레오티드로 이루어진 것 중 사전 순으로 가장 앞서는 것을 res에 더해주고 그것을 제외한 뉴클레오티드를 c..