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]) 필자..
2231번: 분해합 어떤 자연수 N이 있을 때, 그 자연수 N의 분해합은 N과 N을 이루는 각 자리수의 합을 의미한다. 어떤 자연수 M의 분해합이 N인 경우, M을 N의 생성자라 한다. 예를 들어, 245의 분해합은 256(=245+2+4+5)이 www.acmicpc.net 풀이 import sys x=int(sys.stdin.readline().rstrip()) ans=[] x1 = x while (x): if x + sum(map(int,str(x))) == x1: ans.append(x) x-=1 if ans!=[]: print(min(ans)) else: print(0) 필자가 머리를 쥐어짜낸 풀이는 다음과 같다. 기본적인 원리는 자연수 n에서 계속 -1을 하며 x를 전부 대입해보며, 분해합인지 ..
4153번: 직각삼각형 입력은 여러개의 테스트케이스로 주어지며 마지막줄에는 0 0 0이 입력된다. 각 테스트케이스는 모두 30,000보다 작은 양의 정수로 주어지며, 각 입력은 변의 길이를 의미한다. www.acmicpc.net 풀이 import sys a,b,c=list(map(int,sys.stdin.readline().split())) while a!=0 and b!=0 and c!=0: if (a**2)+(b**2)==c**2 or (b**2)+(c**2)==a**2 or (a**2)+(c**2)==b**2: print('right') else: print('wrong') a,b,c=list(map(int,sys.stdin.readline().split())) 직각삼각형의 기본공식은 A^2+B^..