๐ฑ Algorithm/Else(18)
-
ํ๋ก๊ทธ๋๋จธ์ค [lv1] ๋ก๋์์ต๊ณ ์์์์ต์ ์์ ํ์ด์ฌ
2021 dev-matching์ ๋์จ ๋ฌธ์ ์ธ๋ฐ, ๋ํ ๋น์์๋ ํ๋์ ์ผ์ด์ค๋ก ์ธํด ํต๊ณผํ์ง ๋ชปํ๋ค. 14๋ฒ ์ผ์ด์ค๊ฐ ๋ฌธ์ ์ธ๋ฐ, ์ฐ์ ์ค๋ต์ฝ๋๋ฅผ ์ดํด๋ณด์. ์ค๋ต ์ฝ๋ def solution(lottos, win_nums): count_zero = lottos.count(0) count = [1 for num in lottos if num in win_nums] if not count: return [1, 6] return [7 - (len(count) + count_zero), 7 - len(count)] ํ๋๋ ๋ง์๊ฒ ์๋ค๋ ๊ฒ(count ๊ฐ 0)์ 2๊ฐ์ง๋ก ๋ถ๋ฅ ๋๋๋ฐ, lottos๊ฐ ๋ชจ๋ 0์ผ ๋ [1,6]์ด ๋๊ณ , lottos์ 0์ด ํ๋๋ ์์ ๋, [6,6]์ด ๋๋ค. ์ด ์ ์ ๊ฐ๊ณผํ์ฌ 14๋ฒ..
2021.05.18 -
ํ๋ก๊ทธ๋๋จธ์ค ๊ฐ๋ก๋ฑ ํ์ด์ฌ
๋ฌธ์ ์ค๋ช ์์ธ์์ ์ผ์ง์ ๋ชจ์์ ์๋ก์ด ๋๋ก๊ฐ ์๊ฒผ์ต๋๋ค. ์๋ก์ด ๋๋ก์ ์ ์ฒด ๊ธธ์ด๋ l์ด๊ณ ๋๋ก์๋ ์ด n๊ฐ์ ๊ฐ๋ก๋ฑ์ด ์ธ์์ก์ต๋๋ค. ์ด ๋๋ก์ ๋ชจ๋ ๊ฐ๋ก๋ฑ์ ์ ๊ตฌ๋ฅผ ์ฌ์ ๋ฌ๋ ค๊ณ ํฉ๋๋ค. ์ ๊ตฌ๋ฅผ ์ ํํ๋ ๊ธฐ์ค์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. ์ ๊ตฌ๋ ๊ธธ์ ์ข์ธก, ์ฐ์ธก ๋ฐฉํฅ์ผ๋ก ๊ฐ๊ฐ d ๊ธธ์ด๋งํผ ๊ธธ์ ๋ฐํ ์ ์๊ณ , d๋ ์์ฐ์์ ๋๋ค. ๋ชจ๋ ๊ฐ๋ก๋ฑ์๋ ๊ฐ์ ์ข ๋ฅ(d ๊ฐ์ด ๊ฐ์)์ ์ ๊ตฌ๋ฅผ ๋ฌ์์ผ ํฉ๋๋ค. ์์ ์ ์ํ์ฌ ๋๋ก์์ ์ด๋์ด ๋ถ๋ถ์ด ์์ด์๋ ์ ๋ฉ๋๋ค. ์ด๋, d ๊ฐ์ด ์ถฉ๋ถํ ํฌ๋ค๋ฉด ์ ์ฒด ๋๋ก๋ฅผ ๋ฐ๊ฒ ๋น์ถ ์ ์์ง๋ง, d ๊ฐ์ด ์์์ง๋ค๋ฉด ๋๋ก ์์ ๋น์ด ๋ฟ์ง ์๋ ๋ถ๋ถ์ด ์๊ธธ ์๋ ์์ต๋๋ค. ๋ฐ๋ผ์, ๋๋ก ์์ ์ด๋์ด ๋ถ๋ถ์ด ์๊ธฐ์ง ์๋๋ก ํ๋ d ๊ฐ ์ค ์ต์๊ฐ์ ๊ตฌํ๋ ค๊ณ ํฉ๋๋ค. ์ ์ฒด ๋๋ก์ ๊ธธ์ด l, ๊ฐ๋ก..
2021.05.16 -
ํ๋ก๊ทธ๋๋จธ์ค [lv4] N-Queen ํ์ด์ฌ
๋ฌธ์ ์ค๋ช ๊ฐ๋ก, ์ธ๋ก ๊ธธ์ด๊ฐ n์ธ ์ ์ฌ๊ฐํ์ผ๋ก๋ ์ฒด์คํ์ด ์์ต๋๋ค. ์ฒด์คํ ์์ n๊ฐ์ ํธ์ด ์๋ก๋ฅผ ๊ณต๊ฒฉํ ์ ์๋๋ก ๋ฐฐ์นํ๊ณ ์ถ์ต๋๋ค. ์๋ฅผ ๋ค์ด์ n์ด 4์ธ๊ฒฝ์ฐ ๋ค์๊ณผ ๊ฐ์ด ํธ์ ๋ฐฐ์นํ๋ฉด n๊ฐ์ ํธ์ ์๋ก๋ฅผ ํ๋ฒ์ ๊ณต๊ฒฉ ํ ์ ์์ต๋๋ค. ์ฒด์คํ์ ๊ฐ๋ก ์ธ๋ก์ ์ธ๋ก์ ๊ธธ์ด n์ด ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง ๋, n๊ฐ์ ํธ์ด ์กฐ๊ฑด์ ๋ง์กฑ ํ๋๋ก ๋ฐฐ์นํ ์ ์๋ ๋ฐฉ๋ฒ์ ์๋ฅผ returnํ๋ solutionํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์. ์ ํ์ฌํญ ํธ(Queen)์ ๊ฐ๋ก, ์ธ๋ก, ๋๊ฐ์ ์ผ๋ก ์ด๋ํ ์ ์์ต๋๋ค. n์ 12์ดํ์ ์์ฐ์ ์ ๋๋ค. ์ ์ถ๋ ฅ ์ n result 4 2 ์ ๊ทผ - N-Queen์ ์ ์ผํ ๋ฐฑํธ๋ํน ๋ฌธ์ ์ ํด๋น - ๋ชจ๋ ๊ฒฝ์ฐ์ ์๋ฅผ count ํ๋ฉด์, ํ์์๋ ๋ถ๋ถ์ ๊ฐ์ง์น๊ธฐํ๋ค. - ๋ฐฑํธ๋ํน์ n์ด ์์ ๋(..
2021.05.16 -
ํ๋ก๊ทธ๋๋จธ์ค [lv2] ๊ฐ์ฅ ํฐ ์ ์ฌ๊ฐํ ํ์ด์ฌ
์ด๊ฑด ๋ชป ํ์ด์ ๋ค๋ฅธ ๋ถ ํ์ด๋ฅผ ์ฐธ๊ณ ํ์๋ค. # ํ๋ก๊ทธ๋๋จธ์ค ์ฐ์ ํ์ด ์ฐธ๊ณ def solution(board): ss = {} answer = 0 for y, line in enumerate(board): for x, v in enumerate(line): if v == 0: continue ss[(x,y)] = s = min( ss.get((x-1,y), 0), ss.get((x,y-1), 0), ss.get((x-1,y-1), 0) ) + 1 answer = max(answer, s ** 2) return answer ๋ฐฐ์ด ์ python dictionary์ get()๋ฉ์๋๋ฅผ ๋ฐฐ์ธ ์ ์์๋๋ฐ, get()์ ์ฒซ๋ฒ์งธ ์ธ์๋ key๋ก, ๋ ๋ฒ์งธ ์ธ์๋ value๊ฐ ๋๋ค. ์ด ๋, key๊ฐ์ด dicti..
2021.05.15 -
ํ๋ก๊ทธ๋๋จธ์ค [lv2] ๊ดํธ๋ณํ ํ์ด์ฌ
์ ๊ทผ ๋ณต์กํด ๋ณด์ด์ง๋ง, ๋ฌธ์ ์ ์๊ตฌ์กฐ๊ฑด์ ์ฐจ๋ก๋ก ๊ตฌํ ํ๋ฉด ํด๊ฒฐํ ์ ์์ต๋๋ค.. ๋จ, ํ๋์ ํจ์์ ๋ชจ๋ ๊ฒ์ ํด๊ฒฐํ๋ คํ๋ฉด ๋ณต์กํ๊ธฐ ๋๋ฌธ์ 3๊ฐ์ ํจ์๋ก ๋ถ๋ฆฌํ์ฌ ์๊ตฌ์ฌํญ์ ์ฝ๋๋ก ์์ฑํฉ๋๋ค. ๋ฌธ์ ์๊ตฌ ์ฌํญ 1. ์ ๋ ฅ์ด ๋น ๋ฌธ์์ด์ธ ๊ฒฝ์ฐ, ๋น ๋ฌธ์์ด์ ๋ฐํํฉ๋๋ค. 2. ๋ฌธ์์ด w๋ฅผ ๋ "๊ท ํ์กํ ๊ดํธ ๋ฌธ์์ด" u, v๋ก ๋ถ๋ฆฌํฉ๋๋ค. ๋จ, u๋ "๊ท ํ์กํ ๊ดํธ ๋ฌธ์์ด"๋ก ๋ ์ด์ ๋ถ๋ฆฌํ ์ ์์ด์ผ ํ๋ฉฐ, v๋ ๋น ๋ฌธ์์ด์ด ๋ ์ ์์ต๋๋ค. 3. ๋ฌธ์์ด u๊ฐ "์ฌ๋ฐ๋ฅธ ๊ดํธ ๋ฌธ์์ด" ์ด๋ผ๋ฉด ๋ฌธ์์ด v์ ๋ํด 1๋จ๊ณ๋ถํฐ ๋ค์ ์ํํฉ๋๋ค. 3-1. ์ํํ ๊ฒฐ๊ณผ ๋ฌธ์์ด์ u์ ์ด์ด ๋ถ์ธ ํ ๋ฐํํฉ๋๋ค. 4. ๋ฌธ์์ด u๊ฐ "์ฌ๋ฐ๋ฅธ ๊ดํธ ๋ฌธ์์ด"์ด ์๋๋ผ๋ฉด ์๋ ๊ณผ์ ์ ์ํํฉ๋๋ค. 4-1. ๋น ๋ฌธ์์ด์ ์ฒซ ๋ฒ์งธ ๋ฌธ..
2021.04.25 -
ํ๋ก๊ทธ๋๋จธ์ค [lv3] ๋คํธ์ํฌ ํ์ด์ฌ
์ ๊ทผ 1. ์ฃผ์ด์ง ๊ฒ์ ์ ๋ฆฌ : ๋ ธ๋(์ปดํจํฐ)์ ๊ฐฏ์, ๋น๋ฐฉํฅ์ฑ, ์ฐ๊ฒฐ์ 2. ์ฒซ ์๋: key(์ปดํจํฐ) - value (key์ ์ฐ๊ฒฐ๋ ์ปดํจํฐ) ๊ตฌ์กฐ์ dictionary ์์ฑ ์๋ -> ๋ชปํ ใ ใ 3. dfs๋ก ์ ๊ทผ : ์ด๋ฏธ ๋ฐฉ๋ฌธํ ๋ ธ๋๋ฅผ ์ฒดํฌํ๊ธฐ ์ํด visited ๋ฆฌ์คํธ ์์ฑ -> ์์๋ ๋ชจ๋ 0์ผ๋ก ์ฑ์ฐ๊ณ , while๋ฌธ์ผ๋ก 0์ด ๋์ค์ง ์์ ๋ ๊น์ง ์ฒดํฌ 4. ํ์ฌ ๋ฐฉ๋ฌธ์ค์ธ ๋ ธ๋(์ปดํจํฐ)์ ์ฐ๊ฒฐ๋ ์ปดํจํฐ๋ฅผ **๋ชจ๋** ์ฐพ๊ธฐ ์ํด dfs ์คํ ์ ์ธ 5. dfs ์คํ์ append๋ ์กฐ๊ฑด์, ์์ง ๋ฐฉ๋ฌธํ์ง ์์(visited[i]==0) ๋์์(and) ํ์ฌ ๋ฐฉ๋ฌธ์ค์ธ ๋ ธ๋์ ์ฐ๊ฒฐ ๋ผ(computers[curr][i]) ์์ ๋ ํ์ด 1) ๋ฐ๋ณต๋ฌธ ์ฌ์ฉ def solution(n, computers)..
2021.04.25 -
ํ๋ก๊ทธ๋๋จธ์ค [lv2] ์คํ์ฑํ ๋ฐฉ ํ์ด์ฌ
์ ๊ทผ - ์๋์ฒ๋ผ set() ํ์์ผ๋ก ์ ์ฅํ๋ค. (์์ด๋, ์ด๋ฆ, ๋ฉ์์ง) (uid1234, Muzi, ๋์ด ๋ค์ด์์ต๋๋ค.) (uid4567, Prodo, ๋์ด ๋ค์ด์์ต๋๋ค.) (uid4567, -, ๋์ด ๋๊ฐ์ต๋๋ค.) (uid4567, Prodo, ๋์ด ๋ค์ด์์ต๋๋ค.) (uid4567, Ryan, -) - Enter, Leave์ ๊ฒฝ์ฐ๋ง ๊ฒฐ๊ณผ๊ฐ์ ๋ฐ์๋๋ค -> "Change"๋ ๋ถ๊ธฐ ์ฒ๋ฆฌ ํฌ์ธํธ 1. ์ค๊ฐ์ ์ด๋ฆ์ด ๋ฐ๋๋ ๊ฒฝ์ฐ๋ฅผ ๊ณ ๋ คํ๋ ๊ฒ์ด ๊ฐ์ฅ ์ค์ํ ํฌ์ธํธ๋ค. 2. ์ด๋ฆ์ ๋ฐ๋ ์ ์์ง๋ง, uid๋ ๊ณ ์ ๊ฐ์ด๊ธฐ ๋๋ฌธ์ ์ด๊ฒ์ key๋ก, ๋ณํ๋ ์ด๋ฆ์ value๋ก ์ก์๋ค. (๋์ ๋๋ฆฌ ์ฑ์ง์ ์ํด, ์ฑํ ๋ฐฉ์ ๋๊ฐ ํ ์ด๋ฆ์ด ๋ณํ๋ ๊ฒฝ์ฐ๋ฅผ ๊ณง๋ฐ๋ก ์ปค๋ฒํ ์ ์๋ค. uid๋ ๋์ผํ๊ธฐ ๋๋ฌธ์ ๋ณ๊ฒฝ๋ ์ด๋ฆ๋ง ..
2021.04.25 -
ํ๋ก๊ทธ๋๋จธ์ค [lv3] ๋จ์ด๋ณํ ํ์ด์ฌ
์ ๋ฆฌ 1. ๊ธ์ ํ๋๋ง ์ฐจ์ด๋๋ ๋จ์ด๋ฅผ ์ฐพ์ ๋ฆฌ์คํธ์ append (์ฝ๋ ์์ฑ) 2. ์ ํ์ฌํญ์์ ๋ฐ์ดํฐ์ ๊ธธ์ด๊ฐ ๊ธธ์ง ์์ ๊ฒ์ ํ์ธํ ์ ์๋ค. ์๊ฐ๋ณต์ก๋๊ฐ ์กฐ๊ธ ๋์์ ธ๋ ํต๊ณผํ ์ ์์ผ๋ฏ๋ก ์ผ์ค ๋ฐ๋ณต๋ฌธ๋ try ํด๋ด๋ ๋๋ค. - queue๋ฅผ ๋งค๋ฒ ์ ๋ฐ์ดํธ ํด์ค์ผํ๋ค. - ์๋ํ๋ฉด, ์ด๋ค ๋จ์ด๋ฅผ ๊ธฐ์ค์ผ๋ก ์ฐ๊ด๋ ๋จ์ด๋ฅผ ์ฐพ์ ๋๋ง๋ค queue๊ฐ ๋งค๋ฒ ๋ฌ๋ผ์ง ๊ฒ์. - ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ๊ฐ ์ฐ๊ด ๋จ์ด๋ฅผ ๋ด์ temp_q๋ฅผ ๋ง๋ค์ด iter๋ง๋ค ์ด๊ธฐํ ํด์ค์ผํ๋ค. => ๋ ๊ทธ ์ด๊ธฐํ ์์ ์ด ์๋ค. ์ฃผ์ํ ์ 1. ์ด๋ค ๋จ์ด์ ํ ๊ธ์๋ง ์ฐจ์ด๋๋ ๋จ์ด๊ฐ ๊ผญ ํ๋๋ ๋ฒ์ ์๋ค. -> ์ฌ๋ฌ๊ฐ์ธ ๊ฒฝ์ฐ๊ฐ ๋ถ๋ช ์กด์ฌํจ์ ์ธ์ง 2. tmp_q (์์ queue)์ ํ์์ฑ์ ์ธ์งํ ๊ฒ ์คํจํ ํ์ด ๋ง์ง๋ง ํ ์คํธ์ผ์ด์ค์์ ์คํจ..
2021.04.25 -
ํ๋ก๊ทธ๋๋จธ์ค [lv2] ํ๊ฒ๋๋ฒ ํ์ด์ฌ
ํฌ์ธํธ ๋ฆฌ์คํธ ๋ด ์์๋ ๋ชจ๋ ๊ฐ๋ค. ํ๊ฒ ๋๋ฒ๋ฅผ ๋ง์ถ๋ ๋ฐฉ๋ฒ์ด ** ๋ช๊ฐ์ง** ์ธ์ง๋ง ์๋ฉด ๋๋ค. ์ ํ์ ์ธ ์ฌ๊ท ๋ฌธ์ ๋ก, dfs๋ฅผ ์ด์ฉํ์ฌ ํ ์๋ ์์ง๋ง, itertools๋ผ์ด๋ธ๋ฌ๋ฆฌ์ product๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ pythonicํ ์ฝ๋๋ฅผ ์์ฑํ ์๋ ์๋ค. ํ์ด 1) product, ๊ณฑ์งํฉ from itertools import product def solution(numbers, target): temp = [(i, -i) for i in numbers] result = [1 for i in product(*temp) if sum(i) == target] return len(result) temp ๋ฅผ ์ถ๋ ฅํ๋ฉด temp = [(i, -i) for i in numbers] print(temp) >>>..
2021.04.05