๐ฅ์ฝ๋ฉํ
์คํธ:Algorithm
๋ฐฑ์ค (BOJ) 11729๋ฒ https://www.acmicpc.net/problem/2108 ์ฌ์ฉ์ธ์ด : PYTHON 1.๋ฌธ์ ์๋ฅผ ์ฒ๋ฆฌํ๋ ๊ฒ์ ํต๊ณํ์์ ์๋นํ ์ค์ํ ์ผ์ด๋ค. ํต๊ณํ์์ N๊ฐ์ ์๋ฅผ ๋ํํ๋ ๊ธฐ๋ณธ ํต๊ณ๊ฐ์๋ ๋ค์๊ณผ ๊ฐ์ ๊ฒ๋ค์ด ์๋ค. ๋จ, N์ ํ์๋ผ๊ณ ๊ฐ์ ํ์. ์ฐ์ ํ๊ท : N๊ฐ์ ์๋ค์ ํฉ์ N์ผ๋ก ๋๋ ๊ฐ ์ค์๊ฐ : N๊ฐ์ ์๋ค์ ์ฆ๊ฐํ๋ ์์๋ก ๋์ดํ์ ๊ฒฝ์ฐ ๊ทธ ์ค์์ ์์นํ๋ ๊ฐ ์ต๋น๊ฐ : N๊ฐ์ ์๋ค ์ค ๊ฐ์ฅ ๋ง์ด ๋ํ๋๋ ๊ฐ ๋ฒ์ : N๊ฐ์ ์๋ค ์ค ์ต๋๊ฐ๊ณผ ์ต์๊ฐ์ ์ฐจ์ด N๊ฐ์ ์๊ฐ ์ฃผ์ด์ก์ ๋, ๋ค ๊ฐ์ง ๊ธฐ๋ณธ ํต๊ณ๊ฐ์ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค. 2.ํ์ด ์ต๋น๊ฐ์ ๊ตฌํ๋ ๊ฒ์ด ๋ฌธ์ ์๋๋ฐ, ํ์ด์ฌ์ ๋ด์ฅ ํจ์์ธ Collection๋ชจ๋์ Counter์ ์ฌ์ฉํ์ฌ ํด๊ฒฐ..
๐ฅ์ฝ๋ฉํ
์คํธ:Algorithm
๋ฐฑ์ค (BOJ) 11729๋ฒ https://www.acmicpc.net/problem/1181 ์ฌ์ฉ์ธ์ด : PYTHON 1.๋ฌธ์ ์ํ๋ฒณ ์๋ฌธ์๋ก ์ด๋ฃจ์ด์ง N๊ฐ์ ๋จ์ด๊ฐ ๋ค์ด์ค๋ฉด ์๋์ ๊ฐ์ ์กฐ๊ฑด์ ๋ฐ๋ผ ์ ๋ ฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค. 1.๊ธธ์ด๊ฐ ์งง์ ๊ฒ๋ถํฐ 2.๊ธธ์ด๊ฐ ๊ฐ์ผ๋ฉด ์ฌ์ ์์ผ๋ก ์กฐ๊ฑด์ ๋ฐ๋ผ ์ ๋ ฌํ์ฌ ๋จ์ด๋ค์ ์ถ๋ ฅํ๋ค. ๋จ, ๊ฐ์ ๋จ์ด๊ฐ ์ฌ๋ฌ ๋ฒ ์
๋ ฅ๋ ๊ฒฝ์ฐ์๋ ํ ๋ฒ์ฉ๋ง ์ถ๋ ฅํ๋ค. 2.ํ์ด ์ค๋ณต ์ ๊ฑฐ๋ setํจ์๋ฅผ ์ฌ์ฉํ์ฌ ์ ๊ฑฐํ๊ณ , ์ ๋ ฌ์ sortํจ์๋ฅผ ์ฌ์ฉํ์ฌ ์ ๋ ฌํ์๋ค. ์ด๋ ์์ ์กฐ๊ฑด A๊ณผ ํ์ ์กฐ๊ฑด B๊ฐ ์๋๊ฒฝ์ฐ, B๋ก ๋จผ์ ์ ๋ ฌ ํ ํ์ A๋ก ์ ๋ ฌํด์ผ ํ๋ค. ์ฌ๊ธฐ์ A๊ฐ ๊ธธ์ด๊ฐ ์งง์ ๊ฒ๋ถํฐ, B๊ฐ ๊ธธ์ด๊ฐ ๊ฐ์ผ๋ฉด ์ฌ์ ์์ผ๋ก ์ด๋ค. ๋ฐ๋ผ์ ์ฌ์ ์์ผ๋ก ์ ๋ ฌํ๊ณ ๊ธธ์ด๊ฐ ์งง์ ์์ผ๋ก ์ ๋ ฌํด..
๐ฅ์ฝ๋ฉํ
์คํธ:Algorithm
๋ฐฑ์ค (BOJ) 11729๋ฒ https://www.acmicpc.net/problem/11729 ์ฌ์ฉ์ธ์ด : PYTHON 1.๋ฌธ์ ์ธ ๊ฐ์ ์ฅ๋๊ฐ ์๊ณ ์ฒซ ๋ฒ์งธ ์ฅ๋์๋ ๋ฐ๊ฒฝ์ด ์๋ก ๋ค๋ฅธ n๊ฐ์ ์ํ์ด ์์ฌ ์๋ค. ๊ฐ ์ํ์ ๋ฐ๊ฒฝ์ด ํฐ ์์๋๋ก ์์ฌ์๋ค. ์ด์ ์๋์น๋ค์ด ๋ค์ ๊ท์น์ ๋ฐ๋ผ ์ฒซ ๋ฒ์งธ ์ฅ๋์์ ์ธ ๋ฒ์งธ ์ฅ๋๋ก ์ฎ๊ธฐ๋ ค ํ๋ค. *ํ ๋ฒ์ ํ ๊ฐ์ ์ํ๋ง์ ๋ค๋ฅธ ํ์ผ๋ก ์ฎ๊ธธ ์ ์๋ค. *์์ ๋์ ์ํ์ ํญ์ ์์ ๊ฒ์ด ์๋์ ๊ฒ๋ณด๋ค ์์์ผ ํ๋ค. ์ด ์์
์ ์ํํ๋๋ฐ ํ์ํ ์ด๋ ์์๋ฅผ ์ถ๋ ฅํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ๋ผ. ๋จ, ์ด๋ ํ์๋ ์ต์๊ฐ ๋์ด์ผ ํ๋ค. 2.ํ์ด ์ฌ๊ทํจ์๋ฅผ ์ฌ์ฉํด์ ํ์ด์ผ ํ๋ค. ์ด์ ํฌ์คํ
์์ ์ค๋ช
ํ๋ ์์์ ๋งค๊ฐ๋ณ์์ธ ๊ฐ ์ฅ๋๋ฅผ ๋ช
์์ ๋งค๊ฐ๋ณ์ start, via end๋ก ..
๐ฅ์ฝ๋ฉํ
์คํธ:Algorithm
๊ธฐ์กด GCD๊ตฌํ๋ ๋ฐฉ๋ฒ for i in range(min(a,b),0,-1): if a%i==0 and b%i==0: print(i) break a์ b์ค ์์ ์ซ์๋ถํฐ ์์ํด์ 1๊น์ง ๊ฐ์ํ๋ฉด์, ์ ์ผ ์ฒ์ a์ b๋ชจ๋ ๋๋ ๋จ์ดํธ๋ฆฌ๋ ์๋ฅผ ์ฐพ๋ ๋ฐฉ๋ฒ์ด๋ค. ์ด๋ฌํ ๊ฒฝ์ฐ๋ ๋ฌด์ฐจ๋ณ ๋์
(Brute Force)๋ก O(N)์ ์๊ฐ๋ณต์ก๋๋ฅผ ๊ฐ๋๋ค. ์ ํด๋ฆฌ๋ ํธ์ ๋ฒ (Euclidean Algorithm) def gcd(a,b): # a>b if b==0: return a c=a%b return gcd(b,c) a๋ฅผ b๋ก ๋๋ ๋๋จธ์ง๋ฅผ r์ด๋ผ๊ณ ํ์๋, a์ b์ ์ต๋๊ณต์ฝ์๋ b์ r์ ์ต๋๊ณต์ฝ์์ ๊ฐ๋ค๋ ์ฑ์ง์ ์ด์ฉํ ๊ฒ์ด๋ค.(์ฌ๊ทํจ์ ์ด์ฉ) ์ด๋ฌํ ์ฑ์ง์ ํ์ฉํ์ฌ b์ r์ ์ต๋๊ณต์ฝ์ r0๋ฅผ ๊ตฌํ๊ณ r์ r0๋ก ..
๐ฅ์ฝ๋ฉํ
์คํธ:Algorithm
๋ณํฉ ์ ๋ ฌ(Merge Sort) ์ ๋ ฌ ์์ ๋ฆฌ์คํธ์ ๊ธธ์ด๊ฐ 1 ์ดํ์ด๋ฉด ์ด๋ฏธ ์ ๋ ฌ๋ ๊ฒ์ผ๋ก ๋ณธ๋ค. ๋ถํ (divide) : ์ ๋ ฌ๋์ง ์์ ๋ฐฐ์ด์ ์ ๋ฐ์ผ๋ก ์๋ผ ๋ ๋ฐฐ์ด๋ก ๋๋๋ค. ์ ๋ณต(conquer) : ๋๋ ์ง ๋ ๋ฐฐ์ด์ ์ฌ๊ท์ ์ผ๋ก ๋ณํฉ์ ๋ ฌ์ ์ฌ์ฉํด์ ์ ๋ ฌํ๋ค. ๊ฒฐํฉ(combine) : ๋ ๋ฐฐ์ด์ ๋ค์ ํ๋์ ์ ๋ ฌ๋ ๋ฐฐ์ด๋ก ํฉ๋ณํ๋ค. ๋ถํ ์ ๋ณต(divide and conquer)๊ธฐ๋ฒ๊ณผ ์ฌ๊ท ์๊ณ ๋ฆฌ์ฆ์ ์ด์ฉํ์ฌ ์ ๋ ฌํ๋ ๋ฐฉ์์ด๋ค. ์ํ ๊ณผ์ ์์ ๋ค์๊ณผ ๊ฐ์ด ์ ๋ ฌ๋์ง ์์ ๋ฐฐ์ด์ด ์๋ค. [6, 5, 3, 1, 8, 7, 2, 4]์ ๋ฐ์ผ๋ก ์๋ผ ๋ ๋ฐฐ์ด๋ก ๋๋๋ค. [6, 5, 3, 1] [8, 7, 2, 4]๋ค์ ๋ ๋ฐฐ์ด์ ๋๋ ๋ค ๊ฐ๋ก ๋๋๋ค. [6, 5] [3, 1] [8, 7] [2, 4]๋ง์ง๋ง์ผ๋ก ๋ค ..
๐ฅ์ฝ๋ฉํ
์คํธ:Algorithm
์นด์ดํ
์ ๋ ฌ(Counting Sort) ๊ณผ์ ๋ฐฐ์ด์ ์กด์ฌํ๋ ์์ ๊ฐ์๋ฅผ ์ธ์ด์, ์ด๋ฅผ ๋ฐํ์ผ๋ก ์ ๋ ฌ์ ์ํํ๋ค. 1.๋ฐฐ์ด์ ์กด์ฌํ๋ ๊ฐ ๊ฐ์ ๊ฐฏ์๋ฅผ ์ ์ฅํ๋ count ๋ณ์๋ฅผ ์์ฑํ๋ค. ์๋ฅผ๋ค์ด count[1]=4 ๋ผ๋ฉด ๋ฐฐ์ด์๋ 1์ ๊ฐ์ด 4๊ฐ ์๋ค๋ ๊ฒ์ ์๋ฏธํ๋ค. count๋ ๋ฐฐ์ด ์์์ ์ต๋๊ฐ๊น์ง๋ฅผ ์ธ๋ฑ์ค๋ก ์ฌ์ฉํ๋ค. arr = [4, 7, 9, 1, 3, 5, 2, 3, 4] cnt = [0] * (max(arr) + 1) for num in arr: cnt[num] += 1 print(cnt) # [0, 1, 1, 2, 2, 1, 0, 1, 0, 1] 2. count๋ฐฐ์ด์ ๋์ ํฉ์ผ๋ก ๊ณ์ฐํ์ฌ ๊ฐฑ์ ํ์ฌ ์ค๋ค. ๋์ ํฉ์ผ๋ก ๊ฐฑ์ ํ๋ ์ด์ ๋ ๋ฆฌํด ํ ์ ๋ ฌ๋ ๋ฐฐ์ด answer์ ์ ์ ํ ์์น์ ์ฝ์
ํ๊ธฐ ..
๐ฅ์ฝ๋ฉํ
์คํธ:Algorithm
์๊ฐ๋ณต์ก๋ = ์๊ณ ๋ฆฌ์ฆ์ ์์(resource) ์ฌ์ฉ๋์ ๋ถ์ ์์์ด๋ ์คํ์๊ฐ, ๋ฉ๋ชจ๋ฆฌ, ์ ์ฅ์ฅ์น, ํต์ ๋ฑ์ ๋งํ๋ ๊ฒ ์ธ๋ฐ ๊ทธ ์ค์์ ์คํ์๊ฐ์ ๋ํด์ ํํ ๋ฉ๋ชจ๋ฆฌ : ๊ฐ๊ฒฉ๋๋น ๋ฉ๋ชจ๋ฆฌ ์ฉ๋์ด ํฌ๊ฒ ์ฆ๊ฐํ์ฌ ์๋์ ์ธ ์ค์์ฑ์ด ๊ฐ์๋์๋ค. ์คํ์๊ฐ์ ํ๋์จ์ด, ์ด์์ฒด์ , ์ธ์ด, ์ปดํ์ผ๋ฌ ๋ฑ์ ๋ฐ๋ผ์ ๋ฌ๋ผ์ง๊ฒ ๋๋ฏ๋ก ์คํ์๊ฐ์ ์ธก์ ํ๋ ๋์ ์ฐ์ฐ์ ์คํ ํ์๋ฅผ ์ธก์ ํด์ผ ํ๋ค. ์ฐ์ฐ์ ์คํ ํ์ ์
๋ ฅ ๋ฐ์ดํฐ์ ํฌ๊ธฐ(n)์ ๊ดํ ํจ์๋ก ํํํ๊ฒ ๋๋ค. ๋ฐ์ดํฐ์ ํฌ๊ธฐ๊ฐ ๊ฐ๋๋ผ๋ ์ค์ ๋ฐ์ดํฐ์ ๋ฐ๋ผ์ ๋ฌ๋ผ์ง๋ค. (n๊ฐ์ ๋ฐ์ดํฐ์์ ๊ฒ์์ ํ ๋, ์ด์ด ์ข์ผ๋ฉด ๋ฐ๋ก ์ฐพ์ ์๋ ์๊ณ , ์ด์ด ๋์๋ฉด n๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ๋ชจ๋ ๊ฒ์ํด์ ์ฐพ์์ผ ํ ์๋ ์๋ค.) ์ต์
์ ๊ฒฝ์ฐ ์๊ฐ๋ณต์ก๋ ํ๊ท ์๊ฐ๋ณต์ก๋ (ํ๊ท ์๊ฐ๋ณต์ก๋ ๋ถ์์ด..
๐ฅ์ฝ๋ฉํ
์คํธ:Algorithm
๋ฏธ๋ก์ฐพ๊ธฐ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด wall ๊ณผ pathway๋ก ๊ตฌ์ฑ๋ ๋ฏธ๋ก๋ฅผ ํ์ถํ๋ ์ฝ๋๋ฅผ recursion์ผ๋ก ๊ตฌํํ ์ ์๋ค. recursiveํ๊ฒ ์๊ฐ์ ํด์ผํ๋ค. ํ์ฌ ์์น์์ ์ถ๊ตฌ๊น์ง ๊ฐ๋ ๊ฒฝ๋ก๊ฐ ์์ผ๋ ค๋ฉด ํ์ฌ ์์น๊ฐ ์ถ๊ตฌ๊ฑฐ๋ ์ด์ํ ์
๋ค ์ค ํ๋์์ ์ถ๊ตฌ๊น์ง ๊ฐ๋ ๊ฒฝ๋ก๊ฐ ์๊ฑฐ๋ ๊ฐ๋จํ๊ฒ ์๊ฐํด๋ณด๋ฉด ๋ค์๊ณผ ๊ฐ์ด ๊ตฌํํ ์ ์๋ค. boolean findPath(x,y) if (x,y) is the exit return true; else for each neighbouring cell (x',y') of (x,y) do if (x',y') is a pathway cell if findPath(x',y') return true return false; (x,y)์์ ์ถ๊ตฌ๊น์ง ๊ฒฝ๋ก๊ฐ ์์ผ๋ฉด true, ์์ผ๋ฉด f..