์ ์ฒด ๊ธ
[Python] ๋ฐฑ์ค 1654 ๋์ ์๋ฅด๊ธฐ | ์ด์ง ํ์ | ์๊ฐ ์ด๊ณผ
~๋ชฉ์ฐจ~ ๋ฌธ์ ๋ฌธ์ ํด๊ฒฐ ํฌ์ธํธ ์์ฑ ์ฝ๋ ๋ฌธ์ https://www.acmicpc.net/problem/1654 1654๋ฒ: ๋์ ์๋ฅด๊ธฐ ์ฒซ์งธ ์ค์๋ ์ค์์์ด ์ด๋ฏธ ๊ฐ์ง๊ณ ์๋ ๋์ ์ ๊ฐ์ K, ๊ทธ๋ฆฌ๊ณ ํ์ํ ๋์ ์ ๊ฐ์ N์ด ์ ๋ ฅ๋๋ค. K๋ 1์ด์ 10,000์ดํ์ ์ ์์ด๊ณ , N์ 1์ด์ 1,000,000์ดํ์ ์ ์์ด๋ค. ๊ทธ๋ฆฌ๊ณ ํญ์ K โฆ N ์ด๋ค. ๊ทธ www.acmicpc.net ๋ฌธ์ ํด๊ฒฐ ํฌ์ธํธ - N์ ๋ฒ์๊ฐ ํฌ๋ฏ๋ก ์ด์งํ์์ผ๋ก ํ์ดํด์ผ ํ๋ค. - ๊ธธ์ด๊ฐ ๊ฐ์ฅ ๊ธด ๋์ ์ end๊ฐ, 0์ start๊ฐ์ผ๋ก ๋๊ณ ์ค๊ฐ ๊ฐ์ผ๋ก mid๋ฅผ ์ ์ธํ๋ค. - start์ end๊ฐ ๊ต์ฐจ๋๋ ์ง์ ์์ ์ข ๋ฃํ๋ while๋ฌธ์ ์์ฑํ์ฌ ์ต๋ ๊ธธ์ด๋ฅผ ์ฐพ๋๋ค. - mid๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ชจ๋ ๋์ ๋ณ ์์ฑ๋๋ ๋์ ๊ฐ์๋ฅผ ๋ชจ..
[Python] ํ๋ก๊ทธ๋๋จธ์ค ๊ดํธ ๋ณํ | DFS
~๋ชฉ์ฐจ~ ๋ฌธ์ ์์ฑ ์ฝ๋ ๋ฌธ์ https://school.programmers.co.kr/learn/courses/30/lessons/60058 ํ๋ก๊ทธ๋๋จธ์ค ์ฝ๋ ์ค์ฌ์ ๊ฐ๋ฐ์ ์ฑ์ฉ. ์คํ ๊ธฐ๋ฐ์ ํฌ์ง์ ๋งค์นญ. ํ๋ก๊ทธ๋๋จธ์ค์ ๊ฐ๋ฐ์ ๋ง์ถคํ ํ๋กํ์ ๋ฑ๋กํ๊ณ , ๋์ ๊ธฐ์ ๊ถํฉ์ด ์ ๋ง๋ ๊ธฐ์ ๋ค์ ๋งค์นญ ๋ฐ์ผ์ธ์. programmers.co.kr ์์ฑ ์ฝ๋ def check(par): # ์ฌ๋ฐ๋ฅธ ๊ดํธ ๋ฌธ์์ด์ธ์ง ํ์ธํ๋ ํจ์ stack = [] for p in par: if p == '(': stack.append('(') # '('๋ผ๋ฉด ์คํ์ ์ฝ์ elif p == ')' and stack: stack.pop() # ')'์ด๋ฉด์ ์คํ์ ๊ดํธ๊ฐ ์์ผ๋ฉด ์ถ๋ ฅ else: return False # ')'์ด๋ฉด์ s..
[Python] ํ๋ก๊ทธ๋๋จธ์ค ํผ๋ณด๋์น ์ | DP
~๋ชฉ์ฐจ~ ๋ฌธ์ ๋ฌธ์ ํด๊ฒฐ ํฌ์ธํธ ์์ฑ ์ฝ๋ ๋ฌธ์ https://school.programmers.co.kr/learn/courses/30/lessons/12945 ํ๋ก๊ทธ๋๋จธ์ค ์ฝ๋ ์ค์ฌ์ ๊ฐ๋ฐ์ ์ฑ์ฉ. ์คํ ๊ธฐ๋ฐ์ ํฌ์ง์ ๋งค์นญ. ํ๋ก๊ทธ๋๋จธ์ค์ ๊ฐ๋ฐ์ ๋ง์ถคํ ํ๋กํ์ ๋ฑ๋กํ๊ณ , ๋์ ๊ธฐ์ ๊ถํฉ์ด ์ ๋ง๋ ๊ธฐ์ ๋ค์ ๋งค์นญ ๋ฐ์ผ์ธ์. programmers.co.kr ๋ฌธ์ ํด๊ฒฐ ํฌ์ธํธ - ์ ํ์ ์ธ DP(Dynamic Programming, ๋ค์ด๋๋ฏน ํ๋ก๊ทธ๋๋ฐ) ๋ฌธ์ ํ ๋ฒ ๊ณ์ฐํ ๊ฒฐ๊ณผ์ ๋ํด ์ ์ฅํด๋์ด ์ดํ ๋ค์ ๊ณ์ฐํ์ง ์๋๋ค - 0 ~ n ํผ๋ณด๋์น ์๋ฅผ ์ ์ฅํ ๋ฆฌ์คํธ ์ ์ธ ํ 0๊ณผ 1์ ๋ํ์ฌ ์ด๊ธฐ๊ฐ ์ค์ - 2 ~ n๊น์ง f(n) = f(n-1) + f(n-2)๋ฅผ ์ํ - dp[n]์ ๋ฐํํ๋ 1234567..
[Python] ํ๋ก๊ทธ๋๋จธ์ค ๋ค์ ํฐ ์ซ์
~๋ชฉ์ฐจ~ ๋ฌธ์ ๋ฌธ์ ํด๊ฒฐ ํฌ์ธํธ ์์ฑ ์ฝ๋ ๋ฌธ์ https://school.programmers.co.kr/learn/courses/30/lessons/12911 ํ๋ก๊ทธ๋๋จธ์ค ์ฝ๋ ์ค์ฌ์ ๊ฐ๋ฐ์ ์ฑ์ฉ. ์คํ ๊ธฐ๋ฐ์ ํฌ์ง์ ๋งค์นญ. ํ๋ก๊ทธ๋๋จธ์ค์ ๊ฐ๋ฐ์ ๋ง์ถคํ ํ๋กํ์ ๋ฑ๋กํ๊ณ , ๋์ ๊ธฐ์ ๊ถํฉ์ด ์ ๋ง๋ ๊ธฐ์ ๋ค์ ๋งค์นญ ๋ฐ์ผ์ธ์. programmers.co.kr ์์ฑ ์ฝ๋ def solution(n): cnt1 = str(bin(n)[2:]).count("1") for answer in range(n + 1, 1000001): if cnt1 == str(bin(answer)[2:]).count("1"): return answer bin ๋ด์ฅ ํจ์์ ๋ํด ๋ ์๊ณ ์ถ๋ค๋ฉด ๋ค์ ๊ธ ์ฐธ๊ณ ํ์ธ์! 2023.02.1..
[Python] ํ๋ก๊ทธ๋๋จธ์ค ๋จ์ด ๋ณํ | BFS
~๋ชฉ์ฐจ~ ๋ฌธ์ ๋ฌธ์ ํด๊ฒฐ ํฌ์ธํธ ์์ฑ ์ฝ๋ ๋ฌธ์ https://school.programmers.co.kr/learn/courses/30/lessons/43163 ํ๋ก๊ทธ๋๋จธ์ค ์ฝ๋ ์ค์ฌ์ ๊ฐ๋ฐ์ ์ฑ์ฉ. ์คํ ๊ธฐ๋ฐ์ ํฌ์ง์ ๋งค์นญ. ํ๋ก๊ทธ๋๋จธ์ค์ ๊ฐ๋ฐ์ ๋ง์ถคํ ํ๋กํ์ ๋ฑ๋กํ๊ณ , ๋์ ๊ธฐ์ ๊ถํฉ์ด ์ ๋ง๋ ๊ธฐ์ ๋ค์ ๋งค์นญ ๋ฐ์ผ์ธ์. programmers.co.kr ์์ฑ ์ฝ๋ from collections import deque def solution(begin, target, words): if target not in words: return 0 wordlen = len(begin) def diff1(w1, w2): # ๋ ๋จ์ด๊ฐ ์ํ๋ฒณ ํ๋๋ง ๋ค๋ฅธ์ง ํ๋ณํ๋ ํจ์ cnt = 0 for i in range(..
[Python] ํ๋ก๊ทธ๋๋จธ์ค ์ซ์์ ํํ | DP
~๋ชฉ์ฐจ~ ๋ฌธ์ ๋ฌธ์ ํด๊ฒฐ ํฌ์ธํธ ์์ฑ ์ฝ๋ ๋ฌธ์ https://school.programmers.co.kr/learn/courses/30/lessons/12924 ํ๋ก๊ทธ๋๋จธ์ค ์ฝ๋ ์ค์ฌ์ ๊ฐ๋ฐ์ ์ฑ์ฉ. ์คํ ๊ธฐ๋ฐ์ ํฌ์ง์ ๋งค์นญ. ํ๋ก๊ทธ๋๋จธ์ค์ ๊ฐ๋ฐ์ ๋ง์ถคํ ํ๋กํ์ ๋ฑ๋กํ๊ณ , ๋์ ๊ธฐ์ ๊ถํฉ์ด ์ ๋ง๋ ๊ธฐ์ ๋ค์ ๋งค์นญ ๋ฐ์ผ์ธ์. programmers.co.kr ๋ฌธ์ ํด๊ฒฐ ํฌ์ธํธ - 1 ~ 10000๋ฅผ ํํํ ์ ์๋ ์ฐ์๋ ์๋ฅผ ๋ชจ๋ ์ฐพ์ ๊ทธ ๊ฐ์๋ฅผ ๊ฐ ๋ฆฌ์คํธ์ ์ ์ฅํ๋ค. - ๋ณธ์ธ ์์ ์ผ๋ก ํํํ ์ ์์ผ๋ฏ๋ก ํํ ๊ฐ๋ฅํ ์ฐ์ ์๋ 1๊ฐ ์ด์์ด๋ค. - ์ฐ์ ์๋ก ํํํ ์ ์๋ ์๋ 2์ค for๋ฌธ์ผ๋ก ์ฐพ์ ๊ฐ ์ธ๋ฑ์ค ๋ฆฌ์คํธ์ +1 ์ํ ๊ฐ์ฅ ๋ฐ๊นฅ for๋ฌธ์ ์ฐ์ ์์ ์ฒซ๋ฒ์งธ ์ ๋๋ฒ์งธ for๋ฌธ์ ์ซ์๋ฅผ ์..