https://www.acmicpc.net/problem/1668
풀이: 왼쪽에서부터 높이를 세며, 더 높은 트로피가 나올때마다 카운트를 증가 오른쪽도 똑같이 한 후 카운트를 출력 코드: 사용언어 : Python 3
1 2 3 4 5 6 7 8 9 10 11 12 13 n,cnt1,cnt2,k1,k2=int(input()),0,0,0,0 h={} for i in range(n): h[i]=int(input()) for i in range(0,n): if(h[i]>k1): k1=h[i] cnt1+=1 if(h[n-1-i]>k2): k2=h[n-1-i] cnt2+=1 print(cnt1) print(cnt2)
https://www.acmicpc.net/problem/1789
풀이: 입력받은 숫자를 N 이라고 할 때 (-1 + (1+8*N)^0.5)/2 에 소수점을 버린 값이 최대 개수이다. n(n+1)/2 >= k n^2+n-2k >= 0 n의 최솟값이다. 코드: 사용언어 : Python 3
1 print(int((-1+(1+8*int(input()))**.5)/2))
https://www.acmicpc.net/problem/1834
풀이: 나머지와 몫이 같은 수는 N+1에 배수의 형태로 나타난다. 3일때 4,8 , 4일때 5,10,15 등 n+1의 배수가 n-1번 나타난다. 즉 (n+1)Σ(n-1) 이다. (n+1)n(n-1)/2 (n^3-n)/2 코드: 사용언어 : Python 3
1 2 n=int(input()) print((n**3-n)//2)
https://www.acmicpc.net/problem/1940
풀이: 재료들이 가진 고유의 번호를 가진 리스트를 a라고 하자 이 때 갑옷을 만드는데 필요한 숫자인 M에서 i번째 고유번호인 a[i]를 뺀 값이 리스트 a에 있다면 갑옷을 1개 만들 수 있는 것이므로 카운트를 1 증가시킨다. 계속 증가시키다 보면 서로 짝이되는 수 2개를 모두 카운트를 시키게 되므로 2로 나눠준다. 코드: 사용언어 : Python 3
1 2 3 n,m=int(input()),int(input()) a=input().split() print(sum(a.count(str(m-int(a[i])))for i in range(n))//2)