Notice
Recent Posts
Recent Comments
Link
์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- ์ฝ๋ฉ์ ํ
- ํ๋ก๊ทธ๋๋จธ์ค
- ํฌ๋กค๋ง
- node.js
- ์ฝ๋ฉ
- ํ๋ก ํธ์๋
- ์ฝ๋ฉํ ์คํธ
- ๋ฐฑ์ค
- KDT
- error
- ํ ์ดํ๋ก์ ํธ
- mongodb
- ๋ ธ๋ง๋์ฝ๋
- fe
- JS
- ๋ชจ๊ฐ์ฝ
- javascript
- ์๊ณ ๋ฆฌ์ฆ
- Python
- ๋๋ฆผ์ฝ๋ฉ
- ๊ฐ๋ฐ
- HTML
- CSS
- Til
- heapq
- ๊ตญ๋น์ง์
- ํ์ด์ฌ
- react
- ๊ทธ๋ฆฌ๋
- ํ๋ก์ ํธ
Archives
- Today
- Total
๐ฑ → ๐ณ
[Baekjoon] 1469. ์ ์ฌ์ด ์์ด - python ๋ณธ๋ฌธ
728x90
https://www.acmicpc.net/problem/1469
๋ฌธ์ ์ ๋ณด
๋ฌธ์ ์ ํ | ๋์ด๋ | ๊ฑธ๋ฆฐ ์๊ฐ | ํด๊ฒฐ ์ ๋ฌด | ์ค์ค๋ก ๊ตฌํ ์ฑ๊ณต |
๋ฐฑํธ๋ํน | ๊ณจ๋ 5 | 1h | o | x |
์ค๊ณ ๋ฐฉ๋ฒ
๋ฐฑํธ๋ํน ์๊ณ ๋ฆฌ์ฆ
๊ฐ ๋จ๊ณ์์ ๊ฐ๋ฅํ ๋ชจ๋ ์ซ์๋ฅผ ์๋ํ๊ณ , ๊ทธ ์ ํ์ด ์ ํจํ์ง ํ์ธํจ
๋ง์ฝ ์ ํ์ด ์ ํจํ์ง ์์ผ๋ฉด ๋ค์ ์ซ์๋ก ๋์ด๊ฐ๊ณ , ์ ํจํ๋ฉด ์ฌ๊ท์ ์ผ๋ก ๋ค์ ๋จ๊ณ๋ฅผ ํ์ํจ
- back ํจ์๋ ํ์ฌ ์์น(pos)์ ๊ฐ ์ซ์์ ์ด์ ์์น(prev)๋ฅผ ์ธ์๋ก ๋ฐ์
- pos๊ฐ 2 * N๊ณผ ๊ฐ๋ค๋ฉด ๋ชจ๋ ์์น์ ๋ํด ๊ฐ์ ํ ๋นํ๋ค๋ ๋ป์ด๋ฏ๋ก True๋ฅผ ๋ฐํ
- ๊ฐ ๋จ๊ณ์์ ๊ฐ๋ฅํ ๋ชจ๋ ์ซ์ i์ ๋ํด ๋ฐ๋ณต๋ฌธ ์คํ
- used[i] < 2: ํด๋น ์ซ์ i๊ฐ ์์ง ๋ ๋ฒ ์ฌ์ฉ๋์ง ์์๋์ง ํ์ธ
- (prev[i] != -1 and pos - prev[i] == X[i]+1) or (prev[i] == -1): ์ด์ ์ ํด๋น ์ซ์ i๊ฐ ์ฌ์ฉ๋ ์ ์ด ์๊ณ , ํ์ฌ ์์น์ ์ด์ ์์น ์ฌ์ด์ ๊ฑฐ๋ฆฌ๊ฐ ํด๋น ์ซ์์ ์ผ์นํ๊ฑฐ๋, ์ด์ ์ ํด๋น ์ซ์ i๊ฐ ์ฌ์ฉ๋ ์ ์ด ์๋ ๊ฒฝ์ฐ
- ์์ ์กฐ๊ฑด๋ค์ ๋ง์กฑํ๋ ๊ฒฝ์ฐ:
- ์์ด S์ ํ์ฌ ์์น pos์ ํด๋นํ๋ ๊ฐ์ i๋ก ์ค์ ํ๊ณ ,
- used ๋ฐฐ์ด์์ i๋ฒ์งธ ๊ฐ์ ์ฆ๊ฐ์ํค๋ฉฐ,
- prev ๋ฐฐ์ด์์ ๋ง์ง๋ง์ผ๋ก ๋ฑ์ฅํ i์ ์์น๋ฅผ ํ์ฌ pos๋ก ์ ๋ฐ์ดํธ
- ๊ทธ ํ ์ฌ๊ท์ ์ผ๋ก back ํจ์๋ฅผ ํธ์ถํ์ฌ ๋ค์ ๋จ๊ณ๋ฅผ ํ์
- ๋ง์ฝ back ํจ์ ํธ์ถ ๊ฒฐ๊ณผ True๋ผ๋ฉด, ์ ์์ ์ธ ์์ด ์์ฑ ์๋ฃ๋ผ๋ ์๋ฏธ๋๊น True ๋ฐํ
- ๊ทธ๋ ์ง ์๋ค๋ฉด ๋ฐฑํธ๋ํน์ ์ํ:
- ์์ด S์ ํ์ฌ ์์น pos๊ฐ ์ด๊ธฐํ
- used ๋ฐฐ์ด์์ i๋ฒ์งธ ๊ฐ์ ๊ฐ์์ํค๋ฉฐ,
- prev ๋ฐฐ์ด์์ ๋ง์ง๋ง์ผ๋ก ๋ฑ์ฅํ i์ ์์น ์ ๋ณด ์์ ๋ณต๊ตฌ
- ๋ชจ๋ ๊ฐ๋ฅ์ฑ ํ์ ํ ๋ฌธ์ ํด๊ฒฐ ์คํจ๋ผ๋ฉด False ๋ฐํ
- N์ ์งํฉ X ์ ์์ ๊ฐ์
- X: ์งํฉ X ์ ์์๋ค (์ฌ๊ธฐ์๋ 1๋ถํฐ N๊น์ง์ ์ซ์)
- S: ์์ฑํ ์์ด, ์ด๊ธฐ์๋ ๋ชจ๋ 0์ผ๋ก ์ค์
- used: ๊ฐ ์ซ์๊ฐ ๋ช ๋ฒ ์ฌ์ฉ๋์๋์ง ์ ์ฅํ๋ ๋ฐฐ์ด
- prev: ๊ฐ ์ซ์๊ฐ ๋ง์ง๋ง์ผ๋ก ๋ฑ์ฅํ ์์น๋ฅผ ์ ์ฅํ๋ ๋ฐฐ์ด, ์ด๊ธฐ์๋ ๋ชจ๋ -1๋ก ์ค์
๋ง์ฝ ์์ด ์์ฑ์ด ์ฑ๊ณต์ ์ด๋ผ๋ฉด ์์ฑ๋ ์์ด์ ์ถ๋ ฅํ๊ณ , ๊ทธ๋ ์ง ์๋ค๋ฉด -1์ ์ถ๋ ฅ
์ฝ๋
def back(pos, prev):
if pos == 2 * N:
return True
for i in range(N):
if used[i] < 2 and ((prev[i] != -1 and pos - prev[i] == X[i]+1) or (prev[i] == -1)):
S[pos] = X[i]
used[i] += 1
prev_tmp = prev[i]
prev[i] = pos
if back(pos + 1, prev):
return True
# Backtrack
used[i] -= 1
S[pos] = 0
prev[i]=prev_tmp
return False
N = int(input())
X = sorted(list(map(int, input().split()))) # ๋ง์ฝ ์ฌ๋ฌ ๊ฐ์ผ ๊ฒฝ์ฐ ์ฌ์ ์์ผ๋ก ๊ฐ์ฅ ๋น ๋ฅธ ๊ฒ์ ์ถ๋ ฅ
S=[0]*2*N
used=[0]*N
prev=[-1]*N
if back(0,prev):
print(' '.join(map(str,S)))
else:
print(-1)
728x90
'Algorithms' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Baekjoon] 7490. 0 ๋ง๋ค๊ธฐ - python (1) | 2023.10.02 |
---|---|
[Baekjoon] 14281. ๋ณผ๋ก ์์ด - python (0) | 2023.10.02 |
[Baekjoon] 17392. ์ฐ์ธํ ๋ฐฉํ - python (0) | 2023.09.29 |
[Baekjoon] 2404. ๋จ์ ๋ถ์๋ก ๋ถํ - python (0) | 2023.09.28 |
[Baekjoon] 25421. ์กฐ๊ฑด์ ๋ง๋ ์ ์์ ๊ฐ์ - python (0) | 2023.09.28 |