https://www.acmicpc.net/problem/1241
풀이: 1번 부터 N번까지 학생들의 머리 위의 숫자들의 개수를 저장해놓는다
ex) 2는 2번, 1은 1번…
자신의 머리 위의 수를 소인수분해한다.
소인수분해를 통해 나온 약수들이 나온 개수만큼 모두 더해준다.
자기 자신과 같은 수 일 때는 자기 자신을 세지않으므로 조심하자.
코드: 사용언어 : python
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 import math N=int(input()) a=[] d=dict() for i in range(N): a.append(int(input())) d[a[-1]] = d.
https://www.acmicpc.net/problem/1188
풀이: 소시지가 N개 평론가가 M명 있을 때,
각각의 평론가는 N/M개의 소시지를 가지고 간다. (그러므로 만약, N이 M으로 나누어 떨어진다면 소시지를 자르지 않아도 된다.) => GCD(N, M) = M
N개의 소시지를 이어붙여 1개의 소시지로 만든다면, 소시지는 M - 1번 잘라야 한다. => GCD(N, M) = 1
즉, M - GCD(N, M) 번 자른다면 평론가들은 모두 동일한 양의 소시지를 얻을 수 있다.
코드: 사용언어 : python
1 2 3 import math n,m=map(int,input().
https://www.acmicpc.net/problem/1092
풀이: 크레인과 박스를 정렬한다
단, 이때 정렬은 내림차순으로 해야한다. 오름차순으로 할 경우 안되는 경우의 수가 존재.
정렬된 크레인과 박스의 맨 처음을 비교한다. 만약 박스의 무게가 더 크다면, 모든 박스를 옮길 수 없으므로 -1을 출력한다.
크레인을 한칸씩 오른쪽으로 이동시키면서 박스를 확인한다. 옮긴 박스는 0으로 바꾸고, 이미 0인 박스는 지나친다.
모든 크레인을 사용했다면 time을 1늘리고, 다시 반복한다.
모든 박스를 옮길 때까지 반복한 후 time을 출력한다.
코드: 사용언어 : python
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 a,b,c,d=int(input()),list(map(int, input().
https://www.acmicpc.net/problem/1089
풀이: 5 * 3 자리에서 각 자리에 ‘#’ 이 들어올 경우 될 수 없는 숫자를 찾아놓는다.
ex) (0, 0) 자리에 ‘#’ 이 올 경우 1은 절대 될 수 없다.
첫 번 째 숫자 부터 N까지의 숫자를 찾아가면서 가능한 숫자를 저장해놓는다.
가능한 숫자를 모두 조합한다면, 너무 많은 조합이 가능하므로 다른 방법을 사용한다.
ex) 각 자리에 [1], [2, 3], [1, 8, 9] 가 가능하다면, 만들 수 있는 조합은
121, 128, 129, 131, 138, 139 로 총 6가지 이다.