백준 문제 링크
저울 추 만들기
- N ~ 1의 질량을 가지는 리스트 변수 x(납), y(주석)를 만든다.
- N이 10000까지이므로, 2 ~ 2^15를 가지는 거듭제곱 리스트 lst를 만든다.
- 조건은 다음과 같다.
- for i in range(N):
- for j in range(N):
- if x[i] + y[j] in lst and y[j] != 0:
- temp.append(y[j])
y[j] = 0
break
- 이렇게 하면, temp에 y[j]들이 담기는데 이 리스트 temp를
다시 반대로 뒤집어서 원소를 출력하면 끝!
근데 왜 내림차순으로 비교하느냐? 아래 그림을 참고하면 좋다.
그림처럼 질량이 큰 것 부터 제거를 해줘야한다.
import sys
N = int(sys.stdin.readline())
x = list(range(N, 0, -1))
y = list(range(N, 0, -1))
s = 0
temp = []
lst = [2 ** i for i in range(1, 16)]
for i in range(N):
for j in range(N):
if (x[i] + y[j]) in lst and y[j] != 0:
temp.append(y[j])
y[j] = 0
break
temp.reverse()
for i in temp:
print(i)
시간초과 때문에 pypy3로 제출했다.