๋ฌธ์ ์ค๋ช
๋ฉ๋ธ์ ์๋์ฝฉ์ ์ด์ฉํ์ฌ 7๋ ๊ฐ ์คํํ ๊ฒฐ๊ณผ, ๋ค์๊ณผ ๊ฐ์ ํน๋ณํ ๋ฒ์น์ ๋ฐ๊ฒฌํ์์ต๋๋ค.
- ๋ฅ๊ทผ ์๋ ์์ข (RR)์ ์๊ฐ ์๋ถ, ์ฆ ๊ฐ์ ์ ์ ์๋ผ๋ฆฌ ๊ต๋ฐฐํ ๊ฒฝ์ฐ, ๋ค์ ์ธ๋์ ๋ฅ๊ทผ ์๋ ์์ข ํ์ง๋ง ๋ํ๋๋ค.
- ์ฃผ๋ฆ์ง ์๋ ์์ข (rr)์ ์๊ฐ ์๋ถํ ๊ฒฝ์ฐ, ๋ค์ ์ธ๋์ ์ฃผ๋ฆ์ง ์๋ ์์ข ํ์ง๋ง ๋ํ๋๋ค.
- ๋ ์์ข ์ ๊ต๋ฐฐํ ์ก์ข (Rr)์ ์๊ฐ ์๋ถํ ๊ฒฝ์ฐ, ๋ค์ ์ธ๋์ ํ์ง์ RR:Rr:rr=1:2:1์ ๋น์จ๋ก ๋ํ๋๋ค. (์๋ ๊ทธ๋ฆผ ์ฐธ์กฐ)
๋ฉ๋ธ์ ๋ฒ์น์ ๊ณต๋ถํ ์ง์ก์ด๋, ์ง์ ์๋์ฝฉ์ ์๊ฐ ์๋ถ ์คํ์ ์งํํ์ต๋๋ค. ์ง์ก์ด์ ์คํ์์ ์๋์ฝฉ ํ ๊ฐ๋ฅผ ์๊ฐ ์๋ถํ ๊ฒฐ๊ณผ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ๊ฐ ์๋์ฝฉ์ ์๊ฐ ์๋ถํด์ ์ ํํ 4๊ฐ์ ์๋์ฝฉ ํ์์ ๋จ๊ธด๋ค.
- ์ก์ข ์๋์ฝฉ(Rr)์ ์๊ฐ ์๋ถํด์ ์ฒซ์งธ๋ RR, ๋์งธ์ ์ ์งธ๋ Rr, ๋ท์งธ๋ rr ํ์ง์ ํ์์ ๋จ๊ธด๋ค.
- ์์ข ์๋์ฝฉ(RR, rr)์ ์๊ฐ ์๋ถํด์ ์์ ๊ณผ ๊ฐ์ ํ์ง์ ํ์์ ๋จ๊ธด๋ค.
์ก์ข ์๋์ฝฉ(Rr) 1๋๋ถํฐ ์์ํ ๊ฐ๊ณ๋๋ก ๊ทธ๋ ค๋ณด๋ฉด ๊ทธ๋ฆผ 2์ ๊ฐ์ต๋๋ค.
์ง์ก์ด๋ ์ด๋ฌํ ์๋์ฝฉ์ ์๊ฐ ์๋ถ ์คํ ๊ฒฐ๊ณผ๋ฅผ ์ ๋ฆฌํ๊ณ ์ถ์ดํฉ๋๋ค. ํ์ง๋ง, ์ธ๋๋ฅผ ๊ฑฐ๋ญํ ์๋ก, ์๋์ฝฉ์ ์๊ฐ ๋๋ฌด ๋ง์์ ธ ๋ชจ๋ ๊ฐ๊ณ๋๋ฅผ ๊ธฐ๋กํ๊ธฐ ์ด๋ ค์์ก์ต๋๋ค. ์ง์ก์ด๋ ๊ฐ๊ณ๋๋ฅผ ์ ๋ถ ๊ธฐ๋กํ๋ ๊ฒ ๋์ , ์๋์ฝฉ์ ์ธ๋์ ํด๋น ์ธ๋์์ ๋ช ๋ฒ์งธ ๊ฐ์ฒด์ธ์ง๋ฅผ ์๋ฉด ํ์ง์ ๋ฐ๋ก ๊ณ์ฐํ๋ ํ๋ก๊ทธ๋จ์ ๋ง๋ค๋ ค ํฉ๋๋ค.
๊ฐ ์ธ๋์์ ๋งจ ์ผ์ชฝ ๊ฐ์ฒด๋ถํฐ ์ฒซ ๋ฒ์งธ, ๋ ๋ฒ์งธ, ์ธ ๋ฒ์งธ, ...๊ฐ์ฒด๋ก ๋ํ๋ ๋๋ค. ์๋ฅผ ๋ค์ด ๊ทธ๋ฆผ 2์์ 2์ธ๋์ ๋ค ๋ฒ์งธ ๊ฐ์ฒด์ ํ์ง์ "rr"์ด๋ฉฐ, 3์ธ๋์ 9๋ฒ์งธ ๊ฐ์ฒด์ ํ์ง์ "RR"์ ๋๋ค.
ํ์ง์ ์๊ณ ์ถ์ ์๋์ฝฉ์ ์ธ๋๋ฅผ ๋ํ๋ด๋ ์ ์ n๊ณผ, ํด๋น ์๋์ฝฉ์ด ์ธ๋ ๋ด์์ ๋ช ๋ฒ์งธ ๊ฐ์ฒด์ธ์ง๋ฅผ ๋ํ๋ด๋ ์ ์ p๊ฐ 2์ฐจ์ ์ ์ ๋ฐฐ์ด queries์ ์์๋ก ์ฃผ์ด์ง๋๋ค. queries์ ๋ด๊ธด ์์๋๋ก n์ธ๋์ p ๋ฒ์งธ ๊ฐ์ฒด์ ํ์ง์ ๋ฌธ์์ด ๋ฐฐ์ด์ ๋ด์์ return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์.
์ ํ ์ฌํญ
- 1 ≤ queries์ ๊ธธ์ด(์ฟผ๋ฆฌ์ ๊ฐ์) ≤ 5
- queries์ ์์๋ [n, p] ํํ์
๋๋ค.
- 1 ≤ n ≤ 16
- 1 ≤ p ≤ 4n-1
์ ์ถ๋ ฅ ์
queries | result |
[[3, 5]] | ["RR"] |
[[3, 8], [2, 2]] | ["rr", "Rr"] |
[[3, 1], [2, 3], [3, 9]] | ["RR", "Rr", "RR"] |
[[4, 26]] | ["Rr"] |
์ ์ถ๋ ฅ ์ ์ค๋ช
์ ์ถ๋ ฅ ์ #1
- ๋ณธ๋ฌธ์ ๊ฐ๊ณ๋๋ฅผ ์ฐธ๊ณ ํ๋ฉด 3์ธ๋์ 5๋ฒ์งธ ๊ฐ์ฒด์ ํ์ง์ด RR์์ ์ ์ ์์ต๋๋ค.
์ ์ถ๋ ฅ ์ #2
- ๋ณธ๋ฌธ์ ๊ฐ๊ณ๋๋ฅผ ์ฐธ๊ณ ํ๋ฉด 3์ธ๋์ 8๋ฒ์งธ ๊ฐ์ฒด์ ํ์ง์ด rr์์ ์ ์ ์์ต๋๋ค.
- ๋ณธ๋ฌธ์ ๊ฐ๊ณ๋๋ฅผ ์ฐธ๊ณ ํ๋ฉด 2์ธ๋์ 2๋ฒ์งธ ๊ฐ์ฒด์ ํ์ง์ด Rr์์ ์ ์ ์์ต๋๋ค.
์ ์ถ๋ ฅ ์ #3
- ๋ณธ๋ฌธ์ ๊ฐ๊ณ๋๋ฅผ ์ฐธ๊ณ ํ๋ฉด 3์ธ๋์ 1๋ฒ์งธ ๊ฐ์ฒด์ ํ์ง์ด RR์์ ์ ์ ์์ต๋๋ค.
- ๋ณธ๋ฌธ์ ๊ฐ๊ณ๋๋ฅผ ์ฐธ๊ณ ํ๋ฉด 2์ธ๋์ 3๋ฒ์งธ ๊ฐ์ฒด์ ํ์ง์ด Rr์์ ์ ์ ์์ต๋๋ค.
- ๋ณธ๋ฌธ์ ๊ฐ๊ณ๋๋ฅผ ์ฐธ๊ณ ํ๋ฉด 3์ธ๋์ 9๋ฒ์งธ ๊ฐ์ฒด์ ํ์ง์ด RR์์ ์ ์ ์์ต๋๋ค.
์ ์ถ๋ ฅ ์ #4
- 4์ธ๋์ 26๋ฒ์งธ ๊ฐ์ฒด๋ 3์ธ๋์ 7๋ฒ์งธ ๊ฐ์ฒด(Rr)์ ๋์งธ ํ์์ผ๋ก, ํ์ง์ Rr์ด ๋ฉ๋๋ค.
ํ์ด
- gen = 1์ผ ๋, Rr
- gen = 2์ผ ๋, ์
ํํด๋ฆฌ๋ค์ด์
[๊ฐ์ฒด๋ฒํธ-1]
- ์ ํํด๋ฆฌ๋ค์ด์ = [RR,Rr,Rr,rr]
- gen = 3์ผ ๋, 3์ธ๋ ์
ํํด๋ฆฌ๋ค์ด์
[๊ฐ์ฒด๋ฒํธ-1]
- ์ ํํด๋ฆฌ๋ค์ด์ = [RR,RR,RR,RR] [RR,Rr,Rr,rr] [RR,Rr,Rr,rr] [rr,rr,rr,rr]
- ์
ํํด๋ฆฌ๋ค์ด์
์ ๋ฏธ๋ฆฌ ๋ง๋ค๋ฉด...
- 1<= n <= 16, 4์ 16์ ๊ณฑ....
- 1<= p <= 4**(n-1) ใ ใ ใ
- ๋ฏธ๋ฆฌ ๋ชป ๋ง๋ฌ. ๊ท์น์ ์์๋ด์ผ ํ๋ค...
- ๊ท์น์ ์ฌํํด๋ณด์ธ๋ค.
- gen > 2์ผ ๋, (๊ฐ์ฒด๋ฒํธ-1)๋ฅผ 4๋ก ๋๋ ๋ชซ์ผ๋ก ์ด์ ์ธ๋์ ์
ํํด๋ฆฌ๋ค์ด์
๋ฐฐ์ด์ ์ ์ ์๋ฅผ ์ ์ ์์.
- ์) 3์ธ๋, 4๋ฒ ๊ฐ์ฒด๋ RR์.
- ๊ฐ์ฒด๋ฒํธ-1 (4-1) / 4 = 0
- 2์ธ๋ 0๋ฒ ๊ฐ์ฒด = RR
- ์) 3์ธ๋, 4๋ฒ ๊ฐ์ฒด๋ RR์.
- 4์ธ๋, ๊ฐ์ฒด๋ฒํธ 64
- 3์ธ๋, 15 (63/4 = 15.75)
- 2์ธ๋, 3.75 (2์ธ๋ 3์ rr)
- 3์ธ๋, 15 (63/4 = 15.75)
- 4์ธ๋, ๊ฐ์ฒด๋ฒํธ 32
- 31/4 = 7.75 (3์ธ๋, 7)
- 7/4 = 1.75 (2์ธ๋, 1) = Rr
- 31/4 = 7.75 (3์ธ๋, 7)
- gen > 2์ผ ๋, (๊ฐ์ฒด๋ฒํธ-1)๋ฅผ 4๋ก ๋๋ ๋ชซ์ผ๋ก ์ด์ ์ธ๋์ ์
ํํด๋ฆฌ๋ค์ด์
๋ฐฐ์ด์ ์ ์ ์๋ฅผ ์ ์ ์์.
- ๊ทผ๋ฐ RR, Rr, rR, rr์ด ์๋๋ผ RR, Rr, Rr, rr์ด๋ผ์ ๋ญ๊ฐ ์ฝ์งํ๋ค.
- ์ฌ๊ทํธ์ถ๋ก ํด๋ณด๋ ค๋ค๊ฐ ์๋์ ์คํ๊ณผ while ๋ฌธ์ผ๋ก... ๋๋ถ๋ถ ์ด๋ ๊ฒ ํผ ๊ฒ ๊ฐ๋ค.
def solution(queries):
answer = []
def find(gen, individual):
stack = []
while gen > 1:
gen -= 1
individual, mod = divmod(individual,4)
stack.append(mod)
while len(stack) > 0:
mod = stack.pop()
if mod == 0:
return "RR"
if mod == 3:
return "rr"
return "Rr"
for q in queries:
g, i = q[0],q[1]-1
answer.append(find(g, i))
return answer
์ ํ์ฑ ํ
์คํธ
ํ
์คํธ 1 ใ ํต๊ณผ (0.02ms, 10.1MB)
ํ
์คํธ 2 ใ ํต๊ณผ (0.02ms, 10.1MB)
ํ
์คํธ 3 ใ ํต๊ณผ (0.01ms, 10.4MB)
ํ
์คํธ 4 ใ ํต๊ณผ (0.01ms, 10.2MB)
ํ
์คํธ 5 ใ ํต๊ณผ (0.01ms, 10.1MB)
ํ
์คํธ 6 ใ ํต๊ณผ (0.02ms, 10.1MB)
ํ
์คํธ 7 ใ ํต๊ณผ (0.02ms, 10.2MB)
ํ
์คํธ 8 ใ ํต๊ณผ (0.02ms, 10.2MB)
ํ
์คํธ 9 ใ ํต๊ณผ (0.02ms, 9.93MB)
ํ
์คํธ 10 ใ ํต๊ณผ (0.02ms, 10.1MB)
- ๊ณ ์์ ํ์ด
- ์ ์ ๋ฐํ๋ค.
def solution(queries):
cdict = ['RR', 'Rr', 'Rr', 'rr']
answer = []
for q in queries:
if q[0] == 1:
answer.append('Rr')
val = q[1]-1
for i in range(q[0], 1, -1):
mok = val// (4**(i-2))
if mok == 0:
answer.append('RR')
break
elif mok == 3:
answer.append('rr')
break
if i == 2:
answer.append(cdict[mok])
break
val %= (4**(i-2))
return answer
์ ํ์ฑ ํ
์คํธ
ํ
์คํธ 1 ใ ํต๊ณผ (0.01ms, 10.1MB)
ํ
์คํธ 2 ใ ํต๊ณผ (0.01ms, 10.3MB)
ํ
์คํธ 3 ใ ํต๊ณผ (0.01ms, 10.2MB)
ํ
์คํธ 4 ใ ํต๊ณผ (0.01ms, 10.2MB)
ํ
์คํธ 5 ใ ํต๊ณผ (0.01ms, 10.2MB)
ํ
์คํธ 6 ใ ํต๊ณผ (0.02ms, 10.2MB)
ํ
์คํธ 7 ใ ํต๊ณผ (0.01ms, 10.3MB)
ํ
์คํธ 8 ใ ํต๊ณผ (0.01ms, 10.3MB)
ํ
์คํธ 9 ใ ํต๊ณผ (0.01ms, 10.1MB)
ํ
์คํธ 10 ใ ํต๊ณผ (0.01ms, 10.2MB)
'๊ฒ์ ํ๋ก๊ทธ๋๋ฐ > Python ํ๋ก๊ทธ๋๋ฐ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[PCCP ๋ชจ์๊ณ ์ฌ#2] ์ค์ต์ฉ ๋ก๋ด (๋จ์ ๊ตฌํ) (1) | 2023.03.09 |
---|---|
[PCCP ๋ชจ์๊ณ ์ฌ#1] ์ด์์ฒด์ (์ฐ์ ์์ํ) (1) | 2023.03.08 |
[PCCP ๋ชจ์๊ณ ์ฌ#1] ์ฒด์ก๋ํ (itertools.permutation) (0) | 2023.03.06 |
ํ๋ก๊ทธ๋๋จธ์ค ์ฝ๋ฉ์ ๋ฌธ์ญ๋์ธ์ฆ์ํ(PCCP) ์ฝ๋ฉํ์์ญ๋์ธ์ฆ(PCCE) (0) | 2023.03.06 |
ํ๋ก๊ทธ๋๋จธ์ค ๋ถ๋๋ณต๊ท (๊ทธ๋ํ/BFS/์ญ์) (0) | 2023.03.06 |