https://www.acmicpc.net/problem/2609 2609번: 최대공약수와 최소공배수 첫째 줄에는 입력으로 주어진 두 수의 최대공약수를, 둘째 줄에는 입력으로 주어진 두 수의 최소 공배수를 출력한다. www.acmicpc.net 풀이 import sys a,b = map(int,sys.stdin.readline().split()) c=a%b d=a*b while b!=0: if (a%b)==0: c=b break c=a%b a=b b=c print(c) #유클리드 호제법 print(int(d/c)) #최대공약수 * 최소공배수 = a*b와 같다. 단순한 방법으로는 범위가 넓고 구할 수 없기에, 유클리드 호제법을 사용한다. 유클리드 호제법이란 복잡해 보이지만 쉽게 말하면 a를 b로 나눈 나머..
1546번: 평균 첫째 줄에 시험 본 과목의 개수 N이 주어진다. 이 값은 1000보다 작거나 같다. 둘째 줄에 세준이의 현재 성적이 주어진다. 이 값은 100보다 작거나 같은 음이 아닌 정수이고, 적어도 하나의 값은 0보 www.acmicpc.net 풀이 n = int(input()) li = list(map(int,input().split())) ans = sum(li) print((ans/n)/max(li)*100) 리스트에 있는 요소들을 받고, 그 수식들의 평균을 출력해주면 되는 단순한 문제이다. 그렇다면 리스트에 있는 모든 수를 더해서 n으로 나눠준다면 일단 평균이 되고, max(li)*100을 통해 고친 평균을 출력해주면 된다. sum이나 for이나 마찬가지지만, sum이 아주 조금은 더 빠르..
https://www.acmicpc.net/problem/1259 1259번: 팰린드롬수 입력은 여러 개의 테스트 케이스로 이루어져 있으며, 각 줄마다 1 이상 99999 이하의 정수가 주어진다. 입력의 마지막 줄에는 0이 주어지며, 이 줄은 문제에 포함되지 않는다. www.acmicpc.net 풀이 팰린드롬으로 판단하려면 간단하게 앞쪽의 수와 맨 뒤쪽의 수를 비교하면서 가면 된다. 코드로 직관적으로 쉽게 짜면 다음과 같다. import sys li = list(map(int,sys.stdin.buffer.read().rstrip().split())) for i in li: if i==0: break i=str(i) a=0 #첫번째 수의 인덱스 b=-1 #마지막 수의 인덱스 while len(i)!=a:..
15829번: Hashing APC에 온 것을 환영한다. 만약 여러분이 학교에서 자료구조를 수강했다면 해시 함수에 대해 배웠을 것이다. 해시 함수란 임의의 길이의 입력을 받아서 고정된 길이의 출력을 내보내는 함수로 정 www.acmicpc.net 풀이 상당히 특이한 문제이다. 경우에 따라 50점이 나올 수도 있는 문제이다. 50점이 나오는 경우에는 파이썬이 아닐 때는 int의 범위 문제이다. long long을 써서 해결해야 한다. 만약 python이라면 범위는 문제가 없다. 정확히는 너무 큰 수는 출력하는 데 힘들어서 50점을 주는 것이다. 따라서 나머지를 M(문제에서는 1234567891)으로 나눈 나머지로 출력해주면 된다. L=int(input()) arr=str(input()) first=ord(..
2798번: 블랙잭 첫째 줄에 카드의 개수 N(3 ≤ N ≤ 100)과 M(10 ≤ M ≤ 300,000)이 주어진다. 둘째 줄에는 카드에 쓰여 있는 수가 주어지며, 이 값은 100,000을 넘지 않는 양의 정수이다. 합이 M을 넘지 않는 카드 3장 www.acmicpc.net 풀이 import sys from itertools import combinations n,M=map(int,sys.stdin.readline().split()) li=map(int,sys.stdin.readline().split()) b=0 a=list(map(sum,list(combinations(li,3)))) a.sort() for i in a: if i>M: b=a.index(i) break print(a[b-1]) 필자..