๐Ÿ“‚์ฝ”๋”ฉํ…Œ์ŠคํŠธ:CodingTest

๐Ÿ“‚์ฝ”๋”ฉํ…Œ์ŠคํŠธ:CodingTest

[๋ฐฑ์ค€ 11729๋ฒˆ-ํŒŒ์ด์ฌ]ํ•˜๋…ธ์ด ํƒ‘ ์ด๋™ ์ˆœ์„œ

๋ฐฑ์ค€ (BOJ) 11729๋ฒˆ https://www.acmicpc.net/problem/11729 ์‚ฌ์šฉ์–ธ์–ด : PYTHON 1.๋ฌธ์ œ ์„ธ ๊ฐœ์˜ ์žฅ๋Œ€๊ฐ€ ์žˆ๊ณ  ์ฒซ ๋ฒˆ์งธ ์žฅ๋Œ€์—๋Š” ๋ฐ˜๊ฒฝ์ด ์„œ๋กœ ๋‹ค๋ฅธ n๊ฐœ์˜ ์›ํŒ์ด ์Œ“์—ฌ ์žˆ๋‹ค. ๊ฐ ์›ํŒ์€ ๋ฐ˜๊ฒฝ์ด ํฐ ์ˆœ์„œ๋Œ€๋กœ ์Œ“์—ฌ์žˆ๋‹ค. ์ด์ œ ์ˆ˜๋„์Šน๋“ค์ด ๋‹ค์Œ ๊ทœ์น™์— ๋”ฐ๋ผ ์ฒซ ๋ฒˆ์งธ ์žฅ๋Œ€์—์„œ ์„ธ ๋ฒˆ์งธ ์žฅ๋Œ€๋กœ ์˜ฎ๊ธฐ๋ ค ํ•œ๋‹ค. *ํ•œ ๋ฒˆ์— ํ•œ ๊ฐœ์˜ ์›ํŒ๋งŒ์„ ๋‹ค๋ฅธ ํƒ‘์œผ๋กœ ์˜ฎ๊ธธ ์ˆ˜ ์žˆ๋‹ค. *์Œ“์•„ ๋†“์€ ์›ํŒ์€ ํ•ญ์ƒ ์œ„์˜ ๊ฒƒ์ด ์•„๋ž˜์˜ ๊ฒƒ๋ณด๋‹ค ์ž‘์•„์•ผ ํ•œ๋‹ค. ์ด ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š”๋ฐ ํ•„์š”ํ•œ ์ด๋™ ์ˆœ์„œ๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜๋ผ. ๋‹จ, ์ด๋™ ํšŸ์ˆ˜๋Š” ์ตœ์†Œ๊ฐ€ ๋˜์–ด์•ผ ํ•œ๋‹ค. 2.ํ’€์ด ์žฌ๊ท€ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ด์„œ ํ’€์–ด์•ผ ํ•œ๋‹ค. ์ด์ „ ํฌ์ŠคํŒ…์—์„œ ์„ค๋ช…ํ–ˆ๋˜ ์•”์‹œ์  ๋งค๊ฐœ๋ณ€์ˆ˜์ธ ๊ฐ ์žฅ๋Œ€๋ฅผ ๋ช…์‹œ์  ๋งค๊ฐœ๋ณ€์ˆ˜ start, via end๋กœ ..

๐Ÿ“‚์ฝ”๋”ฉํ…Œ์ŠคํŠธ:CodingTest

[์•Œ๊ณ ๋ฆฌ์ฆ˜]์ตœ๋Œ€ ๊ณต์•ฝ์ˆ˜(GCD) ์•Œ๊ณ ๋ฆฌ์ฆ˜ - ์œ ํด๋ฆฌ๋“œ ํ˜ธ์ œ๋ฒ•

๊ธฐ์กด 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๋กœ ..

๐Ÿ“‚์ฝ”๋”ฉํ…Œ์ŠคํŠธ:CodingTest

[์•Œ๊ณ ๋ฆฌ์ฆ˜]๋ณ‘ํ•ฉ ์ •๋ ฌ(Merge Sort)

๋ณ‘ํ•ฉ ์ •๋ ฌ(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]๋งˆ์ง€๋ง‰์œผ๋กœ ๋„ค ..

๐Ÿ“‚์ฝ”๋”ฉํ…Œ์ŠคํŠธ:CodingTest

์นด์šดํŒ… ์ •๋ ฌ(Counting Sort)Permalink

์นด์šดํŒ… ์ •๋ ฌ(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์˜ ์ ์ ˆํ•œ ์œ„์น˜์— ์‚ฝ์ž…ํ•˜๊ธฐ ..

๐Ÿ“‚์ฝ”๋”ฉํ…Œ์ŠคํŠธ:CodingTest

[์•Œ๊ณ ๋ฆฌ์ฆ˜]์‹œ๊ฐ„๋ณต์žก๋„

์‹œ๊ฐ„๋ณต์žก๋„ = ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ์ž์›(resource) ์‚ฌ์šฉ๋Ÿ‰์„ ๋ถ„์„ ์ž์›์ด๋ž€ ์‹คํ–‰์‹œ๊ฐ„, ๋ฉ”๋ชจ๋ฆฌ, ์ €์žฅ์žฅ์น˜, ํ†ต์‹  ๋“ฑ์„ ๋งํ•˜๋Š” ๊ฒƒ ์ธ๋ฐ ๊ทธ ์ค‘์—์„œ ์‹คํ–‰์‹œ๊ฐ„์— ๋Œ€ํ•ด์„œ ํ‘œํ˜„ ๋ฉ”๋ชจ๋ฆฌ : ๊ฐ€๊ฒฉ๋Œ€๋น„ ๋ฉ”๋ชจ๋ฆฌ ์šฉ๋Ÿ‰์ด ํฌ๊ฒŒ ์ฆ๊ฐ€ํ•˜์—ฌ ์ƒ๋Œ€์ ์ธ ์ค‘์š”์„ฑ์ด ๊ฐ์†Œ๋˜์—ˆ๋‹ค. ์‹คํ–‰์‹œ๊ฐ„์€ ํ•˜๋“œ์›จ์–ด, ์šด์˜์ฒด์ œ, ์–ธ์–ด, ์ปดํŒŒ์ผ๋Ÿฌ ๋“ฑ์— ๋”ฐ๋ผ์„œ ๋‹ฌ๋ผ์ง€๊ฒŒ ๋˜๋ฏ€๋กœ ์‹คํ–‰์‹œ๊ฐ„์„ ์ธก์ •ํ•˜๋Š” ๋Œ€์‹  ์—ฐ์‚ฐ์˜ ์‹คํ–‰ ํšŸ์ˆ˜๋ฅผ ์ธก์ •ํ•ด์•ผ ํ•œ๋‹ค. ์—ฐ์‚ฐ์˜ ์‹คํ–‰ ํšŸ์ˆ˜ ์ž…๋ ฅ ๋ฐ์ดํ„ฐ์˜ ํฌ๊ธฐ(n)์— ๊ด€ํ•œ ํ•จ์ˆ˜๋กœ ํ‘œํ˜„ํ•˜๊ฒŒ ๋œ๋‹ค. ๋ฐ์ดํ„ฐ์˜ ํฌ๊ธฐ๊ฐ€ ๊ฐ™๋”๋ผ๋„ ์‹ค์ œ ๋ฐ์ดํ„ฐ์— ๋”ฐ๋ผ์„œ ๋‹ฌ๋ผ์ง„๋‹ค. (n๊ฐœ์˜ ๋ฐ์ดํ„ฐ์—์„œ ๊ฒ€์ƒ‰์„ ํ•  ๋•Œ, ์šด์ด ์ข‹์œผ๋ฉด ๋ฐ”๋กœ ์ฐพ์„ ์ˆ˜๋„ ์žˆ๊ณ , ์šด์ด ๋‚˜์˜๋ฉด n๊ฐœ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ชจ๋‘ ๊ฒ€์ƒ‰ํ•ด์„œ ์ฐพ์•„์•ผ ํ•  ์ˆ˜๋„ ์žˆ๋‹ค.) ์ตœ์•…์˜ ๊ฒฝ์šฐ ์‹œ๊ฐ„๋ณต์žก๋„ ํ‰๊ท  ์‹œ๊ฐ„๋ณต์žก๋„ (ํ‰๊ท  ์‹œ๊ฐ„๋ณต์žก๋„ ๋ถ„์„์ด..

๐Ÿ“‚์ฝ”๋”ฉํ…Œ์ŠคํŠธ:CodingTest

[์•Œ๊ณ ๋ฆฌ์ฆ˜]Recursion ์‘์šฉ(๋ฏธ๋กœ์ฐพ๊ธฐ)

๋ฏธ๋กœ์ฐพ๊ธฐ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์ด 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..

๐Ÿ“‚์ฝ”๋”ฉํ…Œ์ŠคํŠธ:CodingTest

[์•Œ๊ณ ๋ฆฌ์ฆ˜]Recursion ๊ฐœ๋…

์ˆœํ™˜์€ ์ˆ˜ํ•™ํ•จ์ˆ˜ ๊ณ„์‚ฐ์—๋งŒ ์œ ์šฉํ•œ๊ฐ€? ํŒฉํ† ๋ฆฌ์–ผ, ํ”ผ๋ณด๋‚˜์น˜ ์ˆ˜์—ด, ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜์™€ ๊ฐ™์€ ์ˆ˜ํ•™ํ•จ์ˆ˜ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ, ๋‹ค๋ฅธ ๋งŽ์€ ๋ฌธ์ œ๋“ค์„ recursion์œผ๋กœ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค. ๋ฌธ์ž์—ด ๋’ค์ง‘๊ธฐ def f(s): if len(s)==0: return else: f(s[1:]) print(s[0],end='') s=input() f(s) abcdef fedcba Base Case : ๋ฌธ์ž์—ด์˜ ๊ธธ์ด๊ฐ€ 0์ด๋ฉด ์ถœ๋ ฅ์„ ํ•˜์ง€ ์•Š๊ณ  return ์žฌ๊ท€์ ์œผ๋กœ ์ดํ•ด๋ฅผ ํ•ด์•ผํ•œ๋‹ค. ์ฒซ ๋ฒˆ์งธ ๋ฌธ์ž๋ฅผ ์ œ์™ธํ•œ ๋ฌธ์ž์—ด์„ ๋’ค์ง‘์–ด์„œ ์ถœ๋ ฅํ•˜๊ณ , ๊ทธ ๋‹ค์Œ ์ œ์™ธํ•œ ์ฒซ ๋ฒˆ์งธ ๋ฌธ์ž๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ๋ฌธ์ž์—ด์ด ๋’ค์ง‘์–ด์„œ ์ถœ๋ ฅ๋œ๋‹ค. 2์ง„์ˆ˜๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ์ถœ๋ ฅํ•˜๊ธฐ def fun(n): if nend: return False elif lst[begin]==targe..

mc.thd
'๐Ÿ“‚์ฝ”๋”ฉํ…Œ์ŠคํŠธ:CodingTest' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๊ธ€ ๋ชฉ๋ก (8 Page)