[Gold V] Title: 나3곱2, Time: 60 ms, Memory: 34924 KB -BaekjoonHub

This commit is contained in:
SSUM
2026-01-30 21:36:11 +09:00
parent bc938d8be1
commit 0ae3937bbe
2 changed files with 76 additions and 0 deletions

View File

@@ -0,0 +1,37 @@
# [Gold V] 나3곱2 - 16936
[문제 링크](https://www.acmicpc.net/problem/16936)
### 성능 요약
메모리: 34924 KB, 시간: 60 ms
### 분류
수학, 정렬, 해 구성하기
### 제출 일자
2026년 1월 30일 21:35:50
### 문제 설명
<p>나3곱2 게임은 정수 하나를 이용한다. 가장 먼저, 정수 x로 시작하고, 연산을 N-1번 적용한다. 적용할 수 있는 연산은 두 가지 있고, 아래와 같다.</p>
<ul>
<li>나3: x를 3으로 나눈다. x는 3으로 나누어 떨어져야 한다.</li>
<li>곱2: x에 2를 곱한다.</li>
</ul>
<p>나3곱2 게임을 진행하면서, 만든 수를 모두 기록하면 수열 A를 만들 수 있다. 예를 들어, x = 9, N = 6이고, 적용한 연산이 곱2, 곱2, 나3, 곱2, 나3인 경우에 A = [9, 18, 36, 12, 24, 8] 이다.</p>
<p>수열 A의 순서를 섞은 수열 B가 주어졌을 때, 수열 A를 구해보자.</p>
### 입력
<p>첫째 줄에 수열의 크기 N(2 ≤ N ≤ 100)이 주어진다. 둘째 줄에는 수열 B가 주어진다. B에 포함된 원소는 10<sup>18</sup> 보다 작거나 같은 자연수이다.</p>
### 출력
<p>나3곱2 게임의 결과 수열 A를 출력한다. 항상 정답이 존재하는 경우에만 입력으로 주어지며, 가능한 정답이 여러가지인 경우에는 아무거나 출력한다.</p>

View File

@@ -0,0 +1,39 @@
import sys
from collections import deque
input = sys.stdin.readline
N = int(input())
orig = list(map(int, input().split()))
for start in orig:
arr = deque(orig)
answer = deque()
arr.remove(start)
cur = start
answer.append(cur)
while arr:
# 1) /3 우선
if cur % 3 == 0:
div_value = cur // 3
if div_value in arr:
arr.remove(div_value)
cur = div_value
answer.append(cur)
continue
# 2) *2
mul_value = cur * 2
if mul_value in arr:
arr.remove(mul_value)
cur = mul_value
answer.append(cur)
continue
# 다음 값이 없으면 이 start는 실패
break
if len(answer) == N:
print(' '.join(map(str, answer)))
break