[Gold V] Title: 나3곱2, Time: 60 ms, Memory: 34924 KB -BaekjoonHub
This commit is contained in:
37
백준/Gold/16936. 나3곱2/README.md
Normal file
37
백준/Gold/16936. 나3곱2/README.md
Normal 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>
|
||||||
|
|
||||||
39
백준/Gold/16936. 나3곱2/나3곱2.py
Normal file
39
백준/Gold/16936. 나3곱2/나3곱2.py
Normal 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
|
||||||
Reference in New Issue
Block a user