๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ“– Problem Solution

[Swift] 2021 KAKAO BLIND RECRUITMENT ์นด๋“œ ์ง ๋งž์ถ”๊ธฐ

by Fomagran ๐Ÿ’ป 2021. 4. 27.
728x90
๋ฐ˜์‘ํ˜•

 

Problem

 

 

์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต - ์นด๋“œ ์ง ๋งž์ถ”๊ธฐ

[[1,0,0,3],[2,0,0,0],[0,0,0,2],[3,0,1,0]] 1 0 14 [[3,0,0,2],[0,0,1,0],[0,1,0,0],[2,0,0,3]] 0 1 16

programmers.co.kr


Solution

 

๋ชจ๋“  ์นด๋“œ๋ฅผ ๋’ค์ง‘๋Š” ์ตœ์†Œ ์กฐ์ž‘ํšŸ์ˆ˜๋ฅผ ์ฐพ์•„์•ผ ํ•˜๋Š” ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค.

 

(BFS๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๋ฒ•๊ณผ ์ˆœ์—ด๊ตฌํ•˜๋Š” ๋ฒ•์„ ์•Œ์•„์•ผ ๊ตฌํ˜„ํ•˜๊ธฐ ์ˆ˜์›”ํ•˜์‹ค๊ฒ๋‹ˆ๋‹ค.)

 

1. ์นด๋“œ๋ฅผ ๋’ค์ง‘๋Š” ์ˆœ์„œ๋ฅผ ์ •ํ•˜๊ธฐ(์ˆœ์—ด ๊ตฌํ•˜๋Š” ๋ฐฉ๋ฒ• ์•Œ๊ธฐ)

 

๋งŒ์•ฝ 1,2,3 ์นด๋“œ๊ฐ€  ์žˆ๋‹ค๋ฉด 1 - 2 - 3, 1 - 3 - 2, 2 - 1 - 3... ๋“ฑ์œผ๋กœ ๋’ค์ง‘์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

์ˆœ์—ด์„ ๊ตฌํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ์žฌ๊ท€ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•ด ํ•ด๋‹น ํ•˜๋‚˜์”ฉ ์ˆซ์ž๋ฅผ ์ง€์›Œ๋‚˜๊ฐ€๋ฉด์„œ depth์— ์ €์žฅํ•ด์ค๋‹ˆ๋‹ค.

 

ํ•˜์ง€๋งŒ ์นด๋“œ๋Š” ๊ฐ ๊ฐ 2์žฅ์”ฉ ์žˆ์œผ๋ฏ€๋กœ ๋˜‘๊ฐ™์€ ์ˆซ์ž ์นด๋“œ๋ผ๋„ ๋จผ์ € ๋’ค์ง‘์„ ์นด๋“œ ์ˆœ์„œ๋„ ์ •ํ•ด์ค˜์•ผ ํ•ฉ๋‹ˆ๋‹ค.

 

(startCardGame์„ ์ฐธ์กฐํ•ด์ฃผ์„ธ์š”!)

 

2. BFS๋กœ ๋ชจ๋“  ์ด๋™์— ๋Œ€ํ•œ ์กฐ์ž‘ ํšŸ์ˆ˜ ๊ตฌํ•˜๊ธฐ

 

์™ผ์ชฝ,์˜ค๋ฅธ์ชฝ,์•„๋ž˜์ชฝ,์œ„์ชฝ์œผ๋กœ ์ด๋™ํ•˜๋Š” ๊ฒƒ๊ณผ ctrl์„ ๋ˆ„๋ฅด๊ณ  ์™ผ์ชฝ,์˜ค๋ฅธ์ชฝ,์•„๋ž˜์ชฝ,์œ„์ชฝ๋กœ ์ด๋™ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ์œผ๋ฏ€๋กœ ์ด 8๊ฐ€์ง€๋กœ

 

์ด๋™ํ–ˆ์„ ๋•Œ ์กฐ์ž‘ ํšŸ์ˆ˜๋ฅผ ๊ตฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

 

์ด ๋•Œ BFS๋กœ ์ด๋™์— ๋Œ€ํ•œ ๊ฐ’์„ queue์— ๋„ฃ์–ด๋‘๊ณ  queue์˜ ๊ฐ€์žฅ ์ฒซ๋ฒˆ์งธ ๊ฐ’์„ ์‚ญ์ œํ•ด ๋‚˜๊ฐ€๋ฉด์„œ ๊ตฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

๋˜ํ•œ  4x4 Bool์„ ๋‹ด์„ ๋ฐฐ์—ด์„ ๋งŒ๋“ค์–ด์„œ ํ•ด๋‹น ์œ„์น˜๋ฅผ ๋ฐฉ๋ฌธํ–ˆ๋Š”์ง€ ์•ˆํ–ˆ๋Š”์ง€ ํ™•์ธํ•ด์ค๋‹ˆ๋‹ค.

 

(moveCurrentToGoal๊ณผ moveBFS๋ฅผ ์ฐธ๊ณ ํ•ด์ฃผ์„ธ์š”!)

 

3. ๋ชจ๋“  ๊ฒฝ์šฐ์˜ ์ˆ˜์—์„œ ๊ฐ€์žฅ ์ž‘์€ ๊ฐ’ ์ฐพ๊ธฐ

 

์ •๋‹ต(answer) ๋ณ€์ˆ˜๋ฅผ ์ •์ˆ˜์—์„œ ๊ฐ€์žฅ ํฐ ๊ฐ’์ธ Int.max๋กœ ๋†“์Šต๋‹ˆ๋‹ค.

 

์นด๋“œ๋ฅผ ๋’ค์ง‘์„ ๋•Œ๋งˆ๋‹ค depth์— ์ˆซ์ž๋“ค์„ ๋‹ด์•„๋†“๊ณ  ๋ชจ๋“  ์ˆซ์ž๋“ค์ด ๋’ค์ง‘์–ด์กŒ์„๋•Œ ์ฆ‰, depth์— ์นด๋“œ๊ฐฏ์ˆ˜/2๋งŒํผ์˜ ์ˆซ์ž๊ฐ€ ์ฑ„์›Œ์กŒ์„๋•Œ

 

answer์™€ count๋ฅผ ๋น„๊ตํ•ด ๋” ์ž‘๋‹ค๋ฉด answer๋ฅผ count๋กœ ๋ฐ”๊ฟ”์ค๋‹ˆ๋‹ค.

 

์ด๋ ‡๊ฒŒ ๋ชจ๋“  ์ˆœ์—ด์— ๋Œ€ํ•œ ์กฐ์ž‘ํšŸ์ˆ˜๋ฅผ ๊ตฌํ•˜๊ณ  ๋” ์ž‘์€ ๊ฐ’์œผ๋กœ answer๋ฅผ ๋ฐ”๊ฟ”์ค๋‹ˆ๋‹ค.

 

๋งˆ์ง€๋ง‰์œผ๋กœ answer์— ์–ด์ฐจํ”ผ ์นด๋“œ๋“ค์€ ๋’ค์ง‘์–ด์งˆ ๋•Œ๋งˆ๋‹ค +1์ด๋ฏ€๋กœ ์นด๋“œ์˜ ๊ฐฏ์ˆ˜๋งŒํผ์„ ๋”ํ•ด์ฃผ๊ณ  return ํ•ด์ค๋‹ˆ๋‹ค.

 

(solution์„ ์ฐธ๊ณ ํ•ด์ฃผ์„ธ์š”!)


Source Code

 


P.S

 

์ฒ˜์Œ์— ๋ชจ๋“  ์นด๋“œ๋ฅผ ๋’ค์ง‘๋Š” ๊ฒฝ์šฐ์˜ ์ˆ˜๋Š” ๊ทธ๋ƒฅ ๋ชจ๋“  ์นด๋“œ๋ฅผ ํƒ์ƒ‰ํ•˜๊ณ  ๋’ค์ง‘์€ ์นด๋“œ๋ฅผ ์ง€์šฐ๊ณ  ๋˜ ๋‚จ์€ ์นด๋“œ๋“ค์„

 

๋˜‘๊ฐ™์ด ๋ฐ˜๋ณตํ•ด์ฃผ๋ฉด ๋˜์ง€ ์•Š๋‚˜? ๋ผ๊ณ  ์ƒ๊ฐํ–ˆ๋Š”๋ฐ ์•ˆ๋๋‹ค..

 

๊ทผ๋ฐ ์‹ค์ œ๋กœ ์Œ“์ด๋Š” ์ˆซ์ž๋“ค์„ ๋ณด๋ฉด ์ˆœ์—ด๊ณผ ๋˜‘๊ฐ™์ด ์Œ“์ด๊ธดํ•˜๋Š”๋ฐ.. ์™œ ์•ˆ๋ ๊นŒ?

 

BFS๋กœ ๊ตฌํ˜„ํ•˜๊ธฐ ์ „์—๋Š” ํ˜„์žฌ x,y์™€ ๋ชฉ์ ์ง€์˜ x,y๋ฅผ ์ฐจ์ด๋ฅผ ๋น„๊ตํ•ด์„œ x๋จผ์ € ๋งž์ถ”๊ณ  y๋ฅผ ๋งž์ถœ๋•Œ์™€ y ๋จผ์ € ๋งž์ถ”๊ณ  x๋ฅผ ๋งž์ถœ๋•Œ๋ฅผ

 

๊ตฌํ•˜๋ฉด ๋˜๊ฒ ์ง€ํ–ˆ๋Š”๋ฐ ์•„๋ž˜์™€ ๊ฐ™์ด 4์—์„œ 4๋กœ ์ด๋™ํ•˜๋Š” ๊ฒฝ์šฐ๋Š” y๋ฅผ ํ•œ์นธ๋งŒ ์›€์ง์ด๊ณ  x์—์„œ ctrl๋กœ ์›€์ง์ด๊ณ 

 

๋‹ค์‹œ y๋ฅผ ์›€์ง์—ฌ์•ผ ๋˜๋ฏ€๋กœ ๋ชจ๋“  ์ด๋™์— ๋Œ€ํ•œ ์กฐ์ž‘ ํšŸ์ˆ˜๋ฅผ ๊ตฌํ•ด์ค˜์•ผ ํ–ˆ๋‹ค.

 

 

 

์ด๊ฑฐ ํ•œ ๋ฌธ์ œ ํ‘ธ๋Š”๋ฐ ๊ฑฐ์˜ ์ผ์ฃผ์ผ๊ฑธ๋ฆฐ๊ฑฐ ๊ฐ™๋‹ค....

 

๊ณ ์ง‘๋„ ๋งŽ์ด ๋ถ€๋ฆฌ๊ณ  ๋‚˜๋งŒ์˜ ๋ฐฉ์‹์œผ๋กœ ํ’€๊ฑฐ์•ผ๋ผ๊ณ  ์ƒ๊ฐํ•ด์„œ ์˜ค๋ž˜ ๊ฑธ๋ฆฐ๊ฑฐ ๊ฐ™๋‹ค...

 

๋‹ค์Œ๋ถ€ํ„ฐ๋Š” ๋‚ด๋ ค๋†“๊ณ  ๋ฐฐ์šฐ๋Š” ๋งˆ์Œ์œผ๋กœ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•ด์•ผ๊ฒ ๋‹ค.


Reference

 

 

2021 ์นด์นด์˜ค ์‹ ์ž…๊ณต์ฑ„ 1์ฐจ ์˜จ๋ผ์ธ ์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ for Tech developers ๋ฌธ์ œํ•ด์„ค

์ง€๋‚œ 2020๋…„ 9์›” 12์ผ ํ† ์š”์ผ ์˜คํ›„ 2์‹œ๋ถ€ํ„ฐ 7์‹œ๊นŒ์ง€ 5์‹œ๊ฐ„ ๋™์•ˆ 2021 ์นด์นด์˜ค ์‹ ์ž… ๊ฐœ๋ฐœ์ž ๊ณต์ฑ„ 1์ฐจ ์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ๊ฐ€ ์ง„ํ–‰๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ํ…Œ์ŠคํŠธ์—๋Š” ์ด 7๊ฐœ์˜ ๋ฌธ์ œ๊ฐ€ ์ถœ์ œ๋˜์—ˆ์œผ๋ฉฐ, ๊ฐœ๋ฐœ ์–ธ์–ด๋Š” C++, Java, Jav

tech.kakao.com

728x90
๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€