BOJ - 2205

주의·2024년 1월 15일
0

boj

목록 보기
80/214

백준 문제 링크
저울 추 만들기

❓접근법

  1. N ~ 1의 질량을 가지는 리스트 변수 x(납), y(주석)를 만든다.
  2. N이 10000까지이므로, 2 ~ 2^15를 가지는 거듭제곱 리스트 lst를 만든다.
  3. 조건은 다음과 같다.
  • 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
  1. 이렇게 하면, 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로 제출했다.

0개의 댓글