๋ฐ์ํ
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 | 31 |
Tags
- use-immer
- git branch -m
- react
- ํ ์คํฌ ํ
- react immer
- carouselButton
- styled-components extension
- 1966 ํ๋ฆฐํฐํ
- ๋คํธ์ํฌ ํต์ ์์ฒญ
- Javascript
- Code Splitting
- styled-components ์ค์น ์ค๋ฅ
- ์ต๋จ๊ฑฐ๋ฆฌ์๊ณ ๋ฆฌ์ฆ
- reading 'useDebugValue'
- js fetch
- react-native-snap-carousel
- styled-compoents
- styled components ์ค์น ์๋จ
- vscode extension
- ๋จ์ผ๋งํฌ๋๋ฆฌ์คํธ
- javascript ๋น๋๊ธฐ
- likelion
- ๋ธ๋์น ์ด๋ฆ ๋ณ๊ฒฝ ๋ช ๋ น์ด
- Call Stack
- Styled Components
- React ๊ณต์๋ฌธ์
- fetch()
- styled-components ๋ฒ์ ๋ฌธ์
- java
- reading 'edgesOut'
Archives
- Today
- Total
Keep Going
[BOJ] 6603 ๋ก๋ ๋ณธ๋ฌธ
๋ฐ์ํ
๐ก๋ฌธ์ ๋ถ์ ์์ฝ
- {1,2, .. ,49}์์ 6๊ฐ์ ์๋ฅผ ๊ณจ๋ผ ๋ก๋๋ฅผ ๋ง๋ ๋ค.
- ๋ก๋ ์ ๋ต : k(k>6)๊ฐ์ ์๋ฅผ ๊ณจ๋ผ ์งํฉ S๋ฅผ ๋ง๋ ๋ค์ → ๊ทธ ์๋ง ๊ฐ์ง๊ณ ๋ฒํธ๋ฅผ ์ ํํ๋ ๊ฒ์ด๋ค.
- k=8, S={1,2,3,5,8,13,21,34}์ธ ๊ฒฝ์ฐ ์ด ์งํฉ S์์ ์๋ฅผ ๊ณ ๋ฅผ ์ ์๋ ๊ฒฝ์ฐ์ ์๋ ์ด 28๊ฐ์ง์ด๋ค. ([1,2,3,5,8,13], [1,2,3,5,8,21], [1,2,3,5,8,34], [1,2,3,5,13,21], ..., [3,5,8,13,21,34])
- ์งํฉ S์ k๊ฐ ์ฃผ์ด์ก์ ๋, ์๋ฅผ ๊ณ ๋ฅด๋ ๋ชจ๋ ๋ฐฉ๋ฒ์ ๊ตฌํด๋ผ ~
- ⇒ ๊ฒฝ๋ก๋ฅผ ์ถ์ ํด์ ์์์ผ ํ๊ธฐ ๋๋ฌธ์ dfs ์ฌ์ฉ
- ์ค ~ ์ ๋ ฅ ๋ฐฉ๋ฒ์ด ํน์ดํ๊ตฐ !
์ ์ถ๋ ฅ
- ์ ๋ ฅ
7 1 2 3 4 5 6 7 # k(6<k<13), k๊ฐ์ ์(์งํฉ S์ ํฌํจ๋๋ ์, ์ค๋ฆ์ฐจ์)
8 1 2 3 5 8 13 21 34 # same
0 # ์ ๋ ฅ์ ๋ง์ง๋ง ์ค์๋ 0์ด ํ๋๊ฐ ์ฃผ์ด์ง ~- ์ถ๋ ฅ
1 2 3 4 5 6 # ๊ฐ ํ ์คํธ์ผ์ด์ค๋ง๋ค ์๋ฅผ ๊ณ ๋ฅด๋ ๋ชจ๋ ๋ฐฉ๋ฒ ์ถ๋ ฅ(์ค๋ฆ์ฐจ์)
1 2 3 4 5 7
1 2 3 4 6 7
1 2 3 5 6 7
1 2 4 5 6 7
1 3 4 5 6 7
2 3 4 5 6 7
# ํ ์ผ ์ฌ์ด์๋ ๋น ์ค ํ๋ ~
1 2 3 5 8 13
1 2 3 5 8 21
1 2 3 5 8 34
1 2 3 5 13 21
1 2 3 5 13 34
1 2 3 5 21 34
1 2 3 8 13 21
1 2 3 8 13 34
1 2 3 8 21 34
1 2 3 13 21 34
1 2 5 8 13 21
1 2 5 8 13 34
1 2 5 8 21 34
1 2 5 13 21 34
1 2 8 13 21 34
1 3 5 8 13 21
1 3 5 8 13 34
1 3 5 8 21 34
1 3 5 13 21 34
1 3 8 13 21 34
1 5 8 13 21 34
2 3 5 8 13 21
2 3 5 8 13 34
2 3 5 8 21 34
2 3 5 13 21 34
2 3 8 13 21 34
2 5 8 13 21 34
3 5 8 13 21 34
6 < k < 13
์๊ฐ์ ํ : 1์ด
๐ก์๊ณ ๋ฆฌ์ฆ ์ค๊ณ
- ์ ๋ ฅ๊ฐ ๋ฐ๊ธฐ
- ํ ์คํธ์ผ์ด์ค ๋๋ฉด์ ๋ก๋ ๋ฒํธ ์์ง(dfs ์คํ, ํ ์ผ ์ฌ์ด ๋น์ค ์ธํ )
- ๊ฒฐ๊ณผ ์ถ๋ ฅ
๐ก์ฝ๋
31120 KB / 44 ms
import sys
sys.setrecursionlimit(10**6)
# dfs - backtraking ๋ฐฉ๋ฒ
def dfs_backtracking(s, idx, ans):
# 2. ๋ชฉ์ ์ง์ธ๊ฐ? 6๊ฐ ๋ก๋ ๋ฒํธ๋ฅผ ํ์ํจ
if len(ans)==6:
print(*ans)
return
# 3. ์ธ์ ํ ๊ณณ ๋๊ธฐ
for i in range(idx+1, len(s)):
# 4. ๊ฐ ์ ์๋?
if s[i] not in ans:
# 1. ์ฒดํฌ์ธ
ans.append(s[i])
# 5. ๊ฐ์.
dfs_backtracking(s,i,ans)
ans.pop()
# dfs - ์๋ก์ด ๋ฆฌ์คํธ ๋ง๋๋ ๋ฐฉ๋ฒ
def dfs_new_list(s,idx,ans):
global result
# 1. ์ฒดํฌ์ธ
ans = ans+[s[idx]]
# 2. ๋ชฉ์ ์ง์ธ๊ฐ?
if len(ans)==6:
form = ' '.join(map(str, ans))
result.append(form)
# print(*ans)
return
# 3. ์ธ์ ํ ๊ณณ ๋๊ธฐ
for i in range(idx+1, len(s)):
# 4. ๊ฐ ์ ์๋?
if s[i] not in ans:
# 5. ๊ฐ์.
dfs_new_list(s,i,ans)
# ์ซ์ ์กฐํฉ์ ๋ง๋ค์ด์ผ ํจ = ํ๊ณ ๋๋ ๊ฒฝ๋ก๊ฐ ์ค์ํจ (dfs)
def solution():
# 1. ์
๋ ฅ ๊ฐ ๋ฐ๊ธฐ
tc = []
while True:
line = sys.stdin.readline().strip()
if line[0] == '0':
break
# ์ด๊ฑธ ์ด๋ป๊ฒ ์ ์ฅํ์ง?
# line[0] : k๊ฐ์ ์
# line[1:] : ์งํฉ S
# k = int(line[0])
# s = list(map(int, line[1:].split()))
parts = list(map(int, line.split()))
k = parts[0]
s = parts[1:]
tc.append({'k':k, 's':s})
# 2. ์ธํ
result = []
for i in range(len(tc)):
k = tc[i]['k']
s = tc[i]['s']
# ์๋ก์ด ๋ฆฌ์คํธ ๋ฐฉ์
for idx, num in enumerate(s):
dfs_new_list(s,idx,[])
# ๋ฐฑํธ๋ํน ๋ฐฉ์
# for idx_ in range(len(s)):
# dfs_backtracking(s,idx_,[s[idx_]])
result.append("") # ๋น์ค ์ถ๊ฐ
result.pop() # ๋น์ค ์ ๊ฑฐ
print('\\n'.join(result))
if __name__ == "__main__":
solution()
๐ก์๊ฐ๋ณต์ก๋
O(k^2)
๐ก ํ๋ฆฐ ์ด์
- ์ถ๋ ฅ ๋ฐฉ์์ ํ๋ฆผ
- ์กฐํฉ์ ๋ง๋ค์ด์ ๋งค๋ฒ ์ ์ฅํ๋ ๋ก์ง์ ์ด๋ป๊ฒ ์์ฑํ ์ง ๋ชฐ๋์
๐ก ํ๋ฆฐ ๋ถ๋ถ ์์ or ๋ค๋ฅธ ํ์ด
์ ๋ ฅ ๋ฐ์์ค๋ ๋ถ๋ถ 2๊ฐ์ง ํ์ด ๋ฐฉ๋ฒ
while True:
line = sys.stdin.readline().strip()
if line[0] == '0':
break
# ์ด๊ฑธ ์ด๋ป๊ฒ ์ ์ฅํ์ง?
# line[0] : k๊ฐ์ ์
# line[1:] : ์งํฉ S
# ๋ฐฉ๋ฒ 1
k = int(line[0])
s = list(map(int, line[1:].split()))
# ๋ฐฉ๋ฒ 2
parts = list(map(int, line.split()))
k = parts[0]
s = parts[1:]
# ์ฌ๊ธด ๊ณตํต
tc.append({'k':k, 's':s})
๐ก ๋๋์ or ๊ธฐ์ตํ ์ ๋ณด
- ์๋ก์ด ๋ฆฌ์คํธ ๋ง๋ค๊ธฐ vs ๋ฐฑํธ๋ํน
- ์๋ก์ด ๋ฆฌ์คํธ ๋ง๋๋ ๋ฐฉ์
- ans = ans + [s[idx]] ์ด๋ ๊ฒ ์๋ก์ด ๋ฆฌ์คํธ ๋ง๋ค์ด์ ์ฌ๊ท ํธ์ถ์ ์ ๋ฌ
- ๊ฐ ์ฌ๊ท ํธ์ถ๋ง๋ค ๋ฉ๋ชจ๋ฆฌ์ ์๋ก์ด ๋ฆฌ์คํธ๋ฅผ ์์ฑํ๊ธฐ ์ํด ๋ณต์ฌ ๊ณผ์ , ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ ๊ณผ์ ์ด ๋ฐ์ํ๋ค.
- def dfs_new_list(s,idx,ans): global result # 1. ์ฒดํฌ์ธ : ans = ans+[s[idx]] # 2. ๋ชฉ์ ์ง์ธ๊ฐ? if len(ans)==6: form = ' '.join(map(str, ans)) result.append(form) return # 3. ์ธ์ ํ ๊ณณ ๋๊ธฐ for i in range(idx+1, len(s)): # 4. ๊ฐ ์ ์๋? if s[i] not in ans: # 5. ๊ฐ์. dfs_new_list(s,i,ans)
- ๋ฐฑํธ๋ํน ๋ฐฉ์
- ๋ฆฌ์คํธ๋ฅผ ์์ ํ๋ ๋ฐฉ์์ด๋ค.
- ans ๋ฆฌ์คํธ์ appendํ๊ณ → ์ฌ๊ท ํธ์ถ ๋๋ ํ → ans์์ pop ํ๊ธฐ
- ์ฃผ์ด์ง ๋ฆฌ์คํธ๋ฅผ ์ฌ์ฌ์ฉ ํ๋ ๋ฐฉ์์ด๋ผ, ์๋ก์ด ๋ฆฌ์คํธ ๋ง๋๋ ๊ฒ์ ํ์ํ๋ ๋ฉ๋ชจ๋ฆฌ ํ ๋น/๋ณต์ฌ ๋น ์ฉ์ด ๋ค์ง ์์.
- e.g., ans.append(6) → dfs_backtraking(s,i,[1,2,3,4,5,6]) → len==6์ด ๋์ด return๋์์ ๋ → ans.pop() ์คํ์ผ๋ก ans = [1,2,3,4,5]๊ฐ ๋๊ณ → for i in range(idx+1, len(s)): ๋ฌธ์ ์ด์ด ๋๋ฉด์ if 8 not in ans: ans.append(8) dfs_backtracking(s,i,[1,2,3,4,5,8]) ๋ญ ์๋ฐ ์์ผ๋ก ๋๋๊ฑฐ์ง ~ you know ~~?
- ๋ฆฌ์คํธ๋ฅผ ์์ ํ๋ ๋ฐฉ์์ด๋ค.
- def dfs_backtracking(s, idx, ans): # 2. ๋ชฉ์ ์ง์ธ๊ฐ? 6๊ฐ ๋ก๋ ๋ฒํธ๋ฅผ ํ์ํจ if len(ans)==6: print(*ans) return # 3. ์ธ์ ํ ๊ณณ ๋๊ธฐ for i in range(idx+1, len(s)): # 4. ๊ฐ ์ ์๋? if s[i] not in ans: # 1. ์ฒดํฌ์ธ ans.append(s[i]) # 5. ๊ฐ์. dfs_backtracking(s,i,ans) ans.pop()
- 2๊ฐ์ ๋ฐฉ์ ๋น๊ต
- ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ : ๋ฐฑํธ๋ํน > ์๋ก์ด ๋ฆฌ์คํธ (์๋ก์ด ๋ฆฌ์คํธ๊ฐ ๊ฐ ์ฌ๊ท๋ง๋ค ๋ฆฌ์คํธ๋ฅผ ์๋ก ์์ฑํด์ ์ค์ฒฉ๋ ์ฌ๊ท๊ฐ ๋ง์์ง์๋ก ์ค๋ฒํค๋๊ฐ ํฌ๊ฒ ์ฆ๊ฐํจ)
- ์คํ ์๊ฐ : ๋ฐฑํธ๋ํน > ์๋ก์ด ๋ฆฌ์คํธ (๋ฆฌ์คํธ๋ฅผ ์์ฑํ๋๋ฐ ๊ฑธ๋ฆฌ๋ ์๊ฐ๊ณผ, ๋ฉ๋ชจ๋ฆฌ ๋ณต์ฌ๋ก ์ธํ ์ค๋ฒํค๋๊ฐ ์๋ก์ด ๋ฆฌ์คํธ ๋ฐฉ์์ ์กด์ฌํ๋ค)
- BUT ์ด ๋ฌธ์ ์์๋ ๋ฉ๋ชจ๋ฆฌ/์๊ฐ์ด ๋๊ฐ์ด ๋์ด !
- ๊ฒฐ๋ก ์ ์ผ๋ก, ์ฌ๊ท์ ์กฐํฉ ์์ฑ ๋ฌธ์ ์์๋ ๋ฐฑํธ๋ํน ๋ฐฉ์์ด ๋ ์ฝ๋ค.
- ์๋ก์ด ๋ฆฌ์คํธ ๋ง๋๋ ๋ฐฉ์
- ์ถ๋ ฅ format, ์ ๋ ฅ format ๋ง์ถ๊ธฐ ์ด๋ ค์ ๋ค. ํนํ ์ถ๋ ฅ format์์ tc ํ๋ ๋๋ ๋ ๋ง๋ค ๋น ์ค์ ์ถ๊ฐํ๋ ๋ถ๋ถ์ res = [] ์ด๋ ๊ฒ ๋น ์ถ๋ ฅ ๋ฐฐ์ด ๋ง๋ค๊ณ , tc ๋๋ ๋ ๋ง๋ค res.append(””)๋ก ์ฒ๋ฆฌํ๋ค. ๊ทธ๋ฆฌ๊ณ ๋ง์ง๋ง tc ๋๋๊ณ ๋ ๋น ์ค์ด ์์ผ๋ฉด ์๋๋๊น res.pop()ํ๋ค.
๋ฐ์ํ
'Problem Solving' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ๋ก๊ทธ๋๋จธ์ค] ์ ์ ์ผ๊ฐํ (0) | 2024.05.27 |
---|---|
[BOJ] 2626 ๋ฐ์ด๋ฌ์ค (0) | 2024.05.13 |
[BOJ] 18870 ์ขํ ์์ถ (1) | 2024.04.22 |
[BOJ] 1966 ํ๋ฆฐํฐ ํ (0) | 2024.04.15 |
์๊ณ ๋ฆฌ์ฆ ์ฑ๋ฅ ํ๊ฐ์ python ์ ์๋ฃํ (0) | 2023.11.09 |