[Algorithm] - 2022 ์นด์นด์ค ์ ์ 1์ฐจ ์จ๋ผ์ธ ์ฝ๋ฉ ํ ์คํธ (Kakao Newbie Primary Online Coding Test) for Tech developers ๋ฌธ์ ํ์ด
๋งค๋ ์ด๋ค์ง๋ ์นด์นด์ค ์ ์ ์จ๋ผ์ธ ์ฝ๋ฉ ํ ์คํธ ๋ฌธ์ ํ์ด๋ฅผ ๋ ์ ๊ฒ ๋์๋ค์. ํ์ฌ ์ ๋ฌด๋ฅผ ์ข ๋ ์ ๊ฒฝ์จ์ผ ํ๋ค๋ณด๋ ๋ง๋ฅ ํธ๋ ๊ฒ์ ๋ฏธ๋ค๋๊ณ ๋ง ์๋ค ์ด์ ์์ผ ๋ฌธ์ ํ์ด๋ฅผ ์งํํ๊ฒ ๋์์ต๋๋ค.
์ด๋ฒ์๋ ๋จผ์ ๋ฌธ์ ํ์ด ์ ํ๊ธฐ๋ฅผ ์ ๊น ๋ง์๋๋ฆฌ์๋ฉด ์๋ ๋ฌธ์ ์ ๋นํ์ฌ ๋์ด๋๊ฐ ๋ง์ด ๊ฐ์ ๋ ๋ชจ์ต์ด์์ต๋๋ค. ์๋ ๊ณผ ๋ฌ๋ฆฌ Lv 4 ๋ฌธ์ ๋ ์ถ์ ๋์ง ์์๊ณ , ๊ตฌํ ์ค์ฌ์ ์ ๋ฌธ์ ์ ์ข ๋ ์ค๋ ฅ์ ๋ณด๊ธฐ ์ํ Lv 3 ๋์ด๋ ๋ฌธ์ 1~2๋ฌธ์ ๋ก ์ถ๋ ค์ง ๋ชจ์ต์ด์์ต๋๋ค.
๊ทธ๋ผ ๋ฌธ์ ํ์ด๋ฅผ ์งํํด๋ณด๊ฒ ์ต๋๋ค.
Question 01. ์ ๊ณ ๊ฒฐ๊ณผ ๋ฐ๊ธฐ
๋ฌธ์ ์๋ฌธ: (https://programmers.co.kr/learn/courses/30/lessons/92334)
์ ์ ์ฌ์ ๋ฌด์ง๋ ๊ฒ์ํ์ ๋ถ๋ ์ด์ฉ์๋ฅผ ์ ๊ณ ํ๊ณ ์ฒ๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ ๋ฉ์ผ๋ก ๋ฐ์กํ๋ ์์คํ ์ ๊ฐ๋ฐํ๋ ค๊ณ ํฉ๋๋ค. ํน์ ์กฐ๊ฑด์ ํด๋นํ๋ ๊ฒ์ํ ๋ถ๋ ์ด์ฉ์๋ฅผ ์ฐพ์ ๋์ ์ ๊ณ ํ์๊ฐ ์๊ณ์น๋ฅผ ๋์ ์ด์ฉ์๋ฅผ ์ถ๋ ค๋ด๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ๋ ๋ฌธ์ ์ ๋๋ค.
(์ด์ ๊ธ๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก ๋ฌธ์ ์ ๋ํ ์์ธ ์ฌํญ์ ์๋ตํฉ๋๋ค. ์์ธํ ๋ฌธ์ ๋ ๋ฌธ์ ์๋ฌธ์ ์ฐธ๊ณ ํด์ฃผ์ธ์.)
Solution for Question 01
1๋ฒ ๋ฌธ์ ๋ ์ฃผ์ด์ง ์กฐ๊ฑด์ ์ ์ดํดํ๊ณ ์ฝ๋๋ก ๊ตฌํํ ์ ์๋์ง ๋ณด๋ ๊ธฐ์ด์ ์ธ ๋ฌธ์ ์ ๋๋ค. ์๋ ๊ณผ ๊ฐ์ด 1๋ฒ ๋ฌธ์ ๋ ์ฃผ์ด์ง ์๊ตฌ์ฌํญ์ ์ ์ดํดํ๊ณ ๋ด๊ฐ ์์ ์๋ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ก ์ ๊ตฌํํ๋์ง๋ฅผ ๋ณด๋ ๋ฌธ์ ๊ฐ์์ต๋๋ค. ์ ๋ต๋ฅ ์ด ๋ฌด๋ ค 80%๊ฐ ๋๋๊ตฐ์.
Map๊ณผ Stream์ ์ด์ฉํด์ ํ๋ฉด filter๋ฅผ ์ด์ฉํด ํน์ ์๊ณ๊ฐ์ ๋๋ ๊ตฌ๊ฐ๋ง์ ๋ฆฌ์คํธ๋ก ์ฌ๊ฐ๊ณตํด์ ๋ณด์ฌ์ค ์ ์์ต๋๋ค. ์ด ์ธ์๋ ์ง์ for Loop์ ์ฌ์ฉํ ์๋ ์์ ๊ฒ์ ๋๋ค.
Question 02. k ์ง์์์ ์์์ ๊ฐฏ์ ๊ตฌํ๊ธฐ
๋ฌธ์ ์๋ฌธ: (https://programmers.co.kr/learn/courses/30/lessons/92335)
์์ ์ ์ n์ด ์ฃผ์ด์ง๋๋ค. ์ด ์ซ์๋ฅผ k ์ง์๋ก ๋ฐ๊ฟจ์ ๋, ๋ณํ๋ ์ ์์ ํน์ ์กฐ๊ฑด์ ๋ง๋ ์์(Prime number)๊ฐ ๋ช ๊ฐ์ธ์ง ์๋ ค์ฃผ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ๋ ๋ฌธ์ ์ ๋๋ค.
Solution for Question 02
2๋ฒ ๋ฌธ์ ๋ 1๋ฒ ๋ฌธ์ ์ ๋น์ทํ์ง๋ง ๋จ์ํ ์ฃผ์ด์ง ์๋ฃ๊ตฌ์กฐ๋ฅผ ์ด์ฉํด์ ๊ตฌํํ๊ธฐ ๋ณด๋จ ์ธ์ด์์ ์ ๊ณตํ๋ API๋ ์๋ฃ๊ตฌ์กฐ๋ฅผ ์์ฉํ์ฌ ์ฃผ์ด์ง ๋ฌธ์ ๋ฅผ ์ด๋ค์์ผ๋ก ํด๊ฒฐํ ์ ์๋์ง๋ฅผ ๋ณด๊ณ ์ ํ๋ ๋ฌธ์ ์๋ ๊ฒ ๊ฐ์์ต๋๋ค.
๋จผ์ ๊ตฌํํด์ผ ํ ๊ฒ์ ๋ฐ๋ก ์ง๋ฒ์ ์ด๋ป๊ฒ ๋ณํํ๋ ๊ฒ์ ๋๋ค. n์ด 1 ~ 1,000,000 ๊ธธ์ด๊น์ง์ด๊ณ , k๋ 3 ~ 10๊น์ง์ด๋ฏ๋ก 1,000,000 ๊ธธ์ด๋ฅผ 3์ง์๋ก ๋ณํํ๋ฉด ์ต๋ ๊ธธ์ด๋ 1,212,210,202,001๊ธธ์ด ์ ๋๋ค.์ค์ ๋ก ์ด ๊ธธ์ด๋ ์ฐ๋ฆฌ๊ฐ ์ฌ์ฉํ๋ int ๋ฒ์๋ณด๋ค ํจ์ฌ ๊ธธ๊ธฐ ๋๋ฌธ์ ๋ค๋ฅธ ํ์ ์ ์ด์ฉํด์ ์ง๋ฒ ๋ณํ์ ์ํํด์ผ ํฉ๋๋ค.
๊ฐ๋จํ๊ฒ๋ String ํ์ ์ ์ด์ฉํด๋ณผ ์ ์์ต๋๋ค. Python ์ธ์ด๋ผ๋ฉด ์ผ๋ฐ์ ์ธ String์ ์ฌ์ฉํด๋ณด๊ฑฐ๋ list๋ฅผ ์ฌ์ฉํด๋ณผ ์ ์์ ๊ฒ์ ๋๋ค. ๋ฐ๋ฉด Java์์๋ StringBuilder๊ฐ ์กด์ฌํ๋๋ฐ, Java์ StringBuilder๊ฐ ๊ฐ์ง ์ ์๋ ์ต๋ capacity๋ 2147483647 ๊ธธ์ด๋ผ๋ ์ ์ ๊ฐ์ํ์ ๋ ์ค์ ๋ก ์ด ๋ฌธ์ ๋ฅผ ํ๊ธฐ ์ํ ์ต์ ์ ์กฐ๊ฑด์ ์๋๋๋ค.
ํ์ง๋ง ์์ด๋ฌ๋ํ๊ฒ๋ StringBuilder๋ฅผ ์ฌ์ฉํ์ ๋๋ ์ ํ๋ฆฌ๊ธด ํฉ๋๋ค.
Java์ Integer ํด๋์ค์๋ toString ๋ฉ์๋๊ฐ ์์ต๋๋ค. ํด๋น ๋ฉ์๋๋ฅผ ์ด์ฉํ๋ฉด StringBuilder๋ฅผ ์ฌ์ฉํ์ง ์๊ณ ๋ ์ฝ๊ฒ ์ซ์๋ฅผ ํน์ ์ง๋ฒ ๊ฐ์ผ๋ก ๋ฐ๊ฟ ์ ์์ต๋๋ค.
Question 03 ์ฃผ์ฐจ ์๊ธ ๊ณ์ฐ
๋ฌธ์ ์๋ฌธ: (https://programmers.co.kr/learn/courses/30/lessons/92341)
์ฃผ์ฐจ์ฅ์ ์๊ธํ์ ์ฐจ๋์ด ๋ค์ด์ค๊ณ (์ ์ฐจ) ๋๊ฐ(์ถ์ฐจ) ๊ธฐ๋ก์ด ์ฃผ์ด์ก์ ๋, ์ฐจ๋๋ณ๋ก ์ฃผ์ฐจ ์๊ธ์ ๊ณ์ฐํ๋ ค๊ณ ํฉ๋๋ค. ๋ฌธ์ ๋ฅผ ํ๊ธฐ ์ํ ํน์ ์กฐ๊ฑด์ด ์ฃผ์ด์ก์ ๋, ์ฐจ๋๋ฒํธ๊ฐ ์์ ์๋์ฐจ๋ถํฐ ์ฒญ๊ตฌํ ์ฃผ์ฐจ ์๊ธ์ ์ฐจ๋ก๋๋ก ์ ์ ๋ฐฐ์ด์ ๋ด์ return ํ๋ ํจ์๋ฅผ ์์ฑํ๋ ๋ฌธ์ ์ ๋๋ค.
Solution for Question 03
๊ฐ์ธ์ ์ผ๋ก 3๋ฒ ๋ฌธ์ ๋ณด๋ค๋ 2๋ฒ ๋ฌธ์ ๊ฐ ๋ ์ฌ์ ๋ ๊ฒ ๊ฐ์๋๋ฐ์. ์ ๋ต๋ฅ ์ 73%๋ก 2๋ฒ ๋ฌธ์ ์ ๋ต๋ฅ ์ธ 55%๋ณด๋ค ๋ ๋์ ์์น์ ๋๋ค. 3๋ฒ ๋ฌธ์ ๊ฐ 2๋ฒ ๋ฌธ์ ๋ณด๋ค ๊ฐ์ธ์ ์ผ๋ก ๋ ์ด๋ ต๋ค๊ณ ๋๊ปด์ง ๊ฒ์ ๋ณต์กํ ์๊ตฌ์ฌํญ ๋๋ฌธ์ด์๋๋ฐ์. ๊ฐ๋จํ๊ฒ ํ๋ ค๊ณ ์ ๊ทผํ๊ฒ ๋๋ฉด ์คํจ ์ผ์ด์ค๊ฐ ๋ง์ด ๋์ค๋ ๋ฌธ์ ์์ต๋๋ค.
์ด ๋ฌธ์ ๋ฅผ ํ๊ธฐ ์ํด์๋ ๋จผ์ ์ ๋ ฅ์ ์ฃผ์ด์ง ์๊ฐ์ ์ ์ ํ์ ์ธ int๋ก ๋ณํํ๋ ํจ์๋ฅผ ๊ตฌํํด์ค์ผ ํฉ๋๋ค. ๊ทธ๋์ผ๋ง ์ ์ฐจ์ ์ถ์ฐจ๋ฅผ ๋น๊ตํ์ฌ ์๊ธ์ ๊ณ์ฐํ ์ ์๊ธฐ ๋๋ฌธ์ ๋๋ค.
๊ทธ๋ฐ ๋ค์, ๊ฐ ์ฐจ๋์ ์ฃผ์ฐจ ์๊ฐ์ ๋ชจ๋ ๊ณ์ฐํฉ๋๋ค. ๊ธฐ๋ณธ ์๊ฐ์ ๊ฒฝ์ฐ ๊ธฐ๋ณธ ์๊ฐ์ ์ค์ํ๊ณ , ๊ทธ ์ธ์๋ ์๊ตฌ์ฌํญ๋๋ก ์งํํ๋ฉด ๋ฉ๋๋ค.
๋ง์ง๋ง์ผ๋ก ์ฃผ์ฐจ ์๊ธ์ ๊ณ์ฐํฉ๋๋ค. ์ด ๋, ๋จ์ ์๊ฐ๋ณด๋ค ๋ฏธ๋ง์ ๊ณ์ฐ์ด ๋์ค๋ ๊ฒฝ์ฐ์ ์ฒ๋ฆฌ๊ฐ ์ค์ํ๋ฐ์. ์ด ๋ถ๋ถ์ ์๋ชป ์ฒ๋ฆฌํ๋ฉด ๋จ์ ์๊ฐ ๋ฏธ๋ง์ ์๊ธ์ ๋ํด์ ์ถ๊ฐ ์๊ธ์ด ๊ณ์ฐ๋๋ ์ค์ฐจ๊ฐ ๋์ค๊ธฐ ๋๋ฌธ์ ๋ฐ๋์ ์ด ๋ถ๋ถ ์ฒ๋ฆฌํ๋ ๋ก์ง์ ๋ฃ์ด์ค์ผ ํฉ๋๋ค.
Question 04 ์๊ถ ๋ํ
๋ฌธ์ ์๋ฌธ: (https://programmers.co.kr/learn/courses/30/lessons/92342)
์นด์นด์ค๋ฐฐ ์๊ถ๋ํ๊ฐ ์ด๋ ธ์ต๋๋ค. ๋ผ์ด์ธ์ ์ ๋ฒ ์นด์นด์ค๋ฐฐ ์๊ถ๋ํ ์ฐ์น์์ด๊ณ ์ด๋ฒ ๋ํ์๋ ๊ฒฐ์น์ ๊น์ง ์ฌ๋ผ์์ต๋๋ค. ๊ฒฐ์น์ ์๋๋ ์ดํผ์น์ ๋๋ค. ์นด์นด์ค๋ฐฐ ์๊ถ๋ํ ์ด์์์ํ๋ ํ ์ ์์ ์ฐ์ ์ฐ์น๋ณด๋ค๋ ๋ค์ํ ์ ์๋ค์ด ์๊ถ๋ํ์์ ์ฐ์นํ๊ธฐ๋ฅผ ์ํฉ๋๋ค. ๋ฐ๋ผ์, ์๊ถ๋ํ ์ด์์์ํ๋ ๊ฒฐ์น์ ๊ท์น์ ์ ๋ํ ์ฐ์น์์ธ ๋ผ์ด์ธ์๊ฒ ๋ถ๋ฆฌํ๊ฒ ํน์ ์กฐ๊ฑด์ ์ ํด๋๊ณ , ๊ฒฝ๊ธธ๋ฅผ ์งํํ๋ ค ํฉ๋๋ค.
์ด ๋, ๋ผ์ด์ธ์ด ์ดํผ์น๋ฅผ ๊ฐ์ฅ ํฐ ์ ์์ฐจ๋ก ์ด๊ธฐ๊ธฐ ์ํด n๋ฐ์ ํ์ด์ ์ด๋ค ๊ณผ๋ ์ ์์ ๋ง์ถฐ์ผ ํ๋์ง๋ฅผ ์๋ ค์ฃผ๋ ํ๋ก๊ทธ๋จ์ ๊ตฌํํ๋ ๋ฌธ์ ์ ๋๋ค.
Solution for Question 04
4๋ฒ ๋ฌธ์ ๋ถํฐ ๋์ด๋๊ฐ ์ด๋ ค์์ง๋๋ค. ์ด ๋๋ถํฐ ์ ๋ต๋ฅ ์ด 21%๋ก ๋ด๋ ค๊ฐ๋๋ฐ์.
์ด ๋ฌธ์ ๋ DFS๋ฅผ ์ด์ฉํ์ฌ ํ์ด ๋ณผ ์ ์์ต๋๋ค.
๊ฐ์ ๊ตฌํ ์ ์ํ ์ค์์ ๊ฐ์ฅ ํฐ ์ ์์ฐจ๊ฐ ๋๋ ์ ์๋ฅผ ๊ตฌํ๊ธฐ ์ํด ์ ์ ํ ์ด๋ธ์ ์ ์ฅํ๋ ํด๋์ค๋ฅผ ๋ง๋ค๊ณ , Java์ Comparable ์ธํฐํ์ด์ค๋ก ๊ตฌํํฉ๋๋ค. ํด๋น ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ๋ ์ด์ ๋ Java ์ธ์ด์์ ์ ๊ณตํ๋ Sort ์๊ณ ๋ฆฌ์ฆ์ ์ด์ฉํ๊ธฐ ์ํจ์ ๋๋ค.
ํจ์จ์ฑ ํ ์คํธ ์กฐ๊ฑด์ด ์๊ธฐ ๋๋ฌธ์ ์ค๋ณต ์กฐ๊ฑด์ ํฌ์ฌํด๋ ์ข์ ๊ฒ์ ๋๋ค. ์ค๋ณต ์กฐ๊ฑด์ด๋, visited์ ๊ฐ์ ์ค๋ณต ํ๋ณ ์๊ณ ๋ฆฌ์ฆ ์์ด ์ค๋ณต ์กฐ๊ฑด์ ์์ฉํด ๊ทธ๋ค ๋ฐ์ดํฐ ์ค ๊ฐ์ฅ ๋์ ์ ์๋ฅผ ํ๋ณํ๋ ๊ฒ์ ๋๋ค.
ํน์ ์ธ์ด๋ฅผ ๊น๊ฒ ์์ฉํ๊ณ ์๊ณ ๋ฆฌ์ฆ์ ๋ํ ์ง์์ด ์ด๋ ์ ๋ ๋๋์ง๋ฅผ ๋ณผ ์ ์๋ ๋ฌธ์ ์์ต๋๋ค.
Question 05 ์๊ณผ ๋๋
๋ฌธ์ ์๋ฌธ: (https://programmers.co.kr/learn/courses/30/lessons/92343)
์ด์ง ํธ๋ฆฌ ๋ชจ์ ์ด์์ ๊ฐ ๋ ธ๋์ ๋๋์ ์์ด ํ ๋ง๋ฆฌ์ฉ ๋์ฌ ์์ต๋๋ค. ์ด ์ด์์ ๋ฃจํธ ๋ ธ๋์์ ์ถ๋ฐํ์ฌ ๊ฐ ๋ ธ๋๋ฅผ ๋์๋ค๋๋ฉฐ ์์ ๋ชจ์ผ๋ ค ํฉ๋๋ค. ๊ฐ ๋ ธ๋๋ฅผ ๋ฐฉ๋ฌธํ ๋๋ง๋ค ํด๋น ๋ ธ๋์ ์๋ ์๊ณผ ๋๋๊ฐ ๋น์ ์ ๋ฐ๋ผ์ค๊ฒ ๋ฉ๋๋ค. ์ด๋, ๋๋๋ ์์ ์ก์๋จน์ ๊ธฐํ๋ฅผ ๋ ธ๋ฆฌ๊ณ ์์ผ๋ฉฐ, ๋น์ ์ด ๋ชจ์ ์์ ์ ๋ณด๋ค ๋๋์ ์๊ฐ ๊ฐ๊ฑฐ๋ ๋ ๋ง์์ง๋ฉด ๋ฐ๋ก ๋ชจ๋ ์์ ์ก์๋จน์ด ๋ฒ๋ฆฝ๋๋ค. ๋น์ ์ ์ค๊ฐ์ ์์ด ๋๋์๊ฒ ์ก์๋จนํ์ง ์๋๋ก ํ๋ฉด์ ์ต๋ํ ๋ง์ ์์ ์์ ๋ชจ์์ ๋ค์ ๋ฃจํธ ๋ ธ๋๋ก ๋์์ค๋ ค ํฉ๋๋ค.
์ด ๋, ์ ์ํ ์กฐ๊ฑด์ ๋ฐ๋ผ ๊ฐ ๋ ธ๋๋ฅผ ๋ฐฉ๋ฌธํ๋ฉด์ ๋ชจ์ ์ ์๋ ์์ ์ต๋ ๋ช ๋ง๋ฆฌ์ธ์ง ๊ตฌํ๋ ํจ์๋ฅผ ๊ตฌํํ๋ ๋ฌธ์ ์ ๋๋ค.
Solution for Question 05
์ด ๋ฌธ์ ๋ 4๋ฒ ๋ฌธ์ ์ฒ๋ผ DFS๋ฅผ ์ด์ฉํด ๋ฌธ์ ๋ฅผ ํ์ด๋ณผ ์ ์์ต๋๋ค.
๋จผ์ ๊ฐ ๋ ธ๋์ ์งํฉ์ Edge๋ก ํํํ๊ณ , ๊ทธ๋ค์ด ์ด๋ป๊ฒ ์ด์ด์ ธ ์๋์ง์ ๋ํ ์ ๋ณด๋ฅผ Graph๋ก ํํํ์์ต๋๋ค. ์ด ๋ถ๋ถ์ ์ฌ๋ฌ๋ถ๋ค์ด ํธํ์ ๋๋ก ๊ตฌํํ์๋ฉด ๋ฉ๋๋ค.
์ค์ํ ๊ฒ์ DFS ๋ถ๋ถ์ ๋๋ค. ์ฌ์ค ์ ์ฝ๋๋ ํธ๋ฆฌ์ ๊ฐ ๋ ธ๋์์ ํ ๋ฒ์ฉ๋ง ๋ฐฉ๋ฌธํ๊ณ ๋๋๊ธฐ ๋๋ฌธ์ ์์ ์ต๋๋ก ๊ตฌํ ์ ์๋ ๋ง๋ฆฟ์๋ฅผ ๊ตฌํ๋ค๊ธฐ ๋ณด๋ค๋ ๊ฐ ํธ๋ฆฌ์ ๋ ธ๋๋ฅผ ๋ฐฉ๋ฌธํด์ ์ค๋ฅธ์ชฝ๊ณผ ์ผ์ชฝ ์ฌ๋ถ ์๊ด์์ด ๋ฐฉ๋ฌธ๋ง ํ๋ฉด ๋๋๊ธฐ ๋๋ฌธ์ max ํจ์๋ฅผ ์ด์ฉํ๋ค ํ๋๋ผ๋ ์ ํํ๊ฒ ์ต๋ ๊ตฌํ ์ ์๋ ์์ ๋ง๋ฆฟ์๋ฅผ ๊ตฌํ ์๊ฐ ์์ต๋๋ค.
๋ฐ๋ผ์ ๋ฐฉ๋ฌธํ ์ ์๋ ๋ชจ๋ ํธ๋ฆฌ์ ๋ ธ๋๋ฅผ ์ถ๊ฐํ๊ณ , ํด๋น ๋ ธ๋๋ฅผ ๋ฐฉ๋ฌธํ๋ ํํ๋ก ์์ฑํ๊ณ , ๊ทธ ๋ค์ ๋ ธ๋๋ฅผ ํ์ํ ๋ ๋ ๋ค์ ๊ทธ ๋ ธ๋๋ฅผ ์ค๋ณต ๋ฐฉ๋ฌธํ ์ ์๋๋ก ์ ๋ํ์ฌ์ผ ํฉ๋๋ค. ์ด๋ ๊ฒ ํ๋ฉด ๋ชจ๋ ๋ฐฉ๋ฌธ ํํ๋ฅผ ๊ฐ์ง๊ธฐ ๋๋ฌธ์ ๋ณ๋์ max ํจ์๋ฅผ ์ด์ฉํ์ง ์๊ณ ๋ ์ต๋๋ก ๊ตฌํ ์ ์๋ ์์ ๋ง๋ฆฟ์๋ฅผ ์ถ๋ ฅํด๋ผ ์ ์์ต๋๋ค.
Question 06 ํ๊ดด๋์ง ์์ ๊ฑด๋ฌผ
๋ฌธ์ ์๋ฌธ: (https://programmers.co.kr/learn/courses/30/lessons/92344)
N x M ํฌ๊ธฐ์ ํ๋ ฌ ๋ชจ์์ ๊ฒ์ ๋งต์ด ์์ต๋๋ค. ์ด ๋งต์๋ ๋ด๊ตฌ๋๋ฅผ ๊ฐ์ง ๊ฑด๋ฌผ์ด ๊ฐ ์นธ๋ง๋ค ํ๋์ฉ ์์ต๋๋ค. ์ ์ ์ด ๊ฑด๋ฌผ๋ค์ ๊ณต๊ฒฉํ์ฌ ํ๊ดดํ๋ ค๊ณ ํฉ๋๋ค. ๊ฑด๋ฌผ์ ์ ์ ๊ณต๊ฒฉ์ ๋ฐ์ผ๋ฉด ๋ด๊ตฌ๋๊ฐ ๊ฐ์ํ๊ณ ๋ด๊ตฌ๋๊ฐ 0์ดํ๊ฐ ๋๋ฉด ํ๊ดด๋ฉ๋๋ค. ๋ฐ๋๋ก, ์๊ตฐ์ ํ๋ณต ์คํฌ์ ์ฌ์ฉํ์ฌ ๊ฑด๋ฌผ๋ค์ ๋ด๊ตฌ๋๋ฅผ ๋์ด๋ ค๊ณ ํฉ๋๋ค.
์ ์ ๊ณต๊ฒฉ ํน์ ์๊ตฐ์ ํ๋ณต ์คํฌ์ด ๋ชจ๋ ๋๋ ๋ค ํ๊ดด๋์ง ์์ ๊ฑด๋ฌผ์ ๊ฐฏ์๊ฐ ๋ช ๊ฐ ์ธ์ง๋ฅผ ์๋ ค์ฃผ๋ ํจ์๋ฅผ ๊ตฌํํ๋ ๋ฌธ์ ์ ๋๋ค.
Solution for Question 06
์ฌํด ์นด์นด์ค ์ ์ ์ฝ๋ฉ ํ ์คํธ์์ ํจ์จ์ฑ์ ์๊ตฌํ๋ ์ ์ผํ ๋ฌธ์ ์ ๋๋ค. ์ธ๋ป ๋ณด๋ฉด ์์ ํ์์ผ๋ก๋ ์ฝ๊ฒ ๊ฐ๋ฅํด ๋ณด์ด์ง๋ง ํจ์จ์ฑ์ด ๊ฑธ๋ ค ์๊ธฐ ๋๋ฌธ์ ์์ ํ์์ธ O(N * M)์ผ๋ก ํ์ด๋ฅผ ํ๊ฒ ๋๋ฉด ํจ์จ์ฑ ํ ์คํธ์ ์ฝ๊ฒ ๋ง๊ฐ์ง ์ ์๋ ๋ฌธ์ ์ ๋๋ค.
์คํฌ์ด ๊ณต๊ฒฉ ์คํฌ์ธ์ง ํ๋ณต ์คํฌ์ธ์ง๋ฅผ ํ์ธํ๊ณ , Dynamic Programming ๊ธฐ๋ฒ์ ํตํด ํด๋น ์คํฌ์ด ๋ฐ๋๋๊ณ ๋ ํ์ matrix๋ฅผ ๊ณ์ฐํฉ๋๋ค.
์ด๋ ๊ฒ ๋์ ํฉ์ด ์ ์ฉ๋ ์ํ๋ก matrix๋ฅผ ์์ ํ์ํ์ฌ ํ๊ดด๋์ง ์์ ๊ฑด๋ฌผ์ ์ค์บํ๋ฉด ํจ์จ์ฑ ํ ์คํธ์์ ํต๊ณผ๋ฅผ ํ ์ ์์ต๋๋ค. (์๊ฐ๋ณต์ก๋: O(N * M * K) )
์ด ๋ฌธ์ ํ์ด์ ํต์ฌ์ ์ข -> ์ฐ, ์ -> ํ๋ก ๋์ ํฉ์ ์งํํ์ฌ O(K)๊ฐ ๋๋ ์์ ์ O(1)๋ก ์ต์ ํํ๋ ๊ฒ์ ๋๋ค. ์ด๋ ๊ฒ๋ง ํ๋ฉด O(N * M * K)๊ฐ O(N * M + K)๋ก ์ต์ ํ ๋๊ธฐ ๋๋ฌธ์ ํจ์จ์ฑ ํ ์คํธ๋ฅผ ์ฝ๊ฒ ํต๊ณผํ ์ ์์ต๋๋ค.
Question 07 ์ฌ๋ผ์ง๋ ๋ฒํ
๋ฌธ์ ์๋ฌธ: (https://programmers.co.kr/learn/courses/30/lessons/92345)
ํ๋ ์ด์ด A์ ํ๋ ์ด์ด B๊ฐ ์๋ก ๊ฒ์์ ํฉ๋๋ค. ๋น์ ์ ์ด ๊ฒ์์ด ๋๋ ๋๊น์ง ์ ํ๋ ์ด์ด๊ฐ ์บ๋ฆญํฐ๋ฅผ ๋ช ๋ฒ ์์ง์ด๊ฒ ๋ ์ง ์์ธกํ๋ ค๊ณ ํฉ๋๋ค.
๊ฐ ํ๋ ์ด์ด๊ฐ 1x1 ๊ฒ์ ๋ณด๋์์ ํน์ ์กฐ๊ฑด์ผ๋ก ๊ฒ์์ ์ํํ์ ๋, ๋ ์บ๋ฆญํฐ๊ฐ ์ต์ ์ ํ๋ ์ด๋ก ์์ง์ธ ํ์์ ํฉ์ ๊ตฌํ๋ ํจ์๋ฅผ ์์ฑํ๋ ๋ฌธ์ ์ ๋๋ค.
Solution for Question 07
์ญ๋ ์นด์นด์ค ์ ์ ์ฝ๋ฉ ํ ์คํธ ๋ง์ง๋ง ๋ฌธ์ ์ธ ๊ฒ์น๊ณค, ์ฌ์ด ์กฐ๊ฑด์ผ๋ก ์ถ์ ๋ ๋ฌธ์ ์ ๋๋ค. ๋ณด๋๊ฐ ์ผ๋จ ํฌ์ง ์๊ณ , ํ๋ ์ด์ด๊ฐ ์ง๋๊ฐ๋ฉด ๋จ์ํ ๊ทธ ๋ณด๋์ ์๋ ํ์ด ์ฌ๋ผ์ง๋ค๋ ์กฐ๊ฑด์ด๊ธฐ ์๊ธฐ ๋๋ฌธ์ ํ์ ์กฐ๊ฑด์ด ์ค์ด๋ญ๋๋ค. ๋ฐ๋ผ์ ์ด ๋ฌธ์ ๋ DFS ์๊ณ ๋ฆฌ์ฆ์ ์จ์ ์ถฉ๋ถํ ํด๊ฒฐํ ์ ์์ต๋๋ค.
๋งคํ ํ๋ ์ด์ด์ ์นํจ ์ฌ๋ถ์ ์์ง์ธ ํ์๋ฅผ ํ์ธํ๋ ํด๋์ค๋ฅผ ๋ง๋ญ๋๋ค. ์์ ์ง์ ์์ ๋๊ตฐ๊ฐ ๊ฒ์์์ ์ด๊ธด ๊ฒฝ์ฐ, ์ด ๊ฒ์์ ๋น ๋ฅด๊ฒ ์ข ๋ฃ๋๋ฉฐ ์ต์ ์์ง์ธ ํ์๋ฅผ ๋ฐํํ๋ฉด ๋ฉ๋๋ค.
๋ฐ๋๋ก ํ๋ ์ด์ด๊ฐ ๋จผ์ ์ง๋ ์ผ์ด์ค๊ฐ ๋ฐ์ํ๋ ๊ฒฝ์ฐ, ์ง ํ๋ ์ด์ด๊ฐ ์ด๋ํ ํ์ ๋ฑ์ ๋์ ํ ์ํ๋ก ๋ฐํํด์ฃผ๋ฉด ๋ฉ๋๋ค.
๋ง์น๋ฉฐ...
์๋ ๋ฌธ์ ์ ๋น๊ตํด๋ดค์ ๋, 2022๋ ์นด์นด์ค ์ ์ 1์ฐจ ์ฝ๋ฉ ํ ์คํธ ๋ฌธ์ ๋ ๋์ด๋๊ฐ ๋ง์ด ๋ฎ์์ง ๋ชจ์ต์ ๋๋ค. ํ์ ์ด์์ ๋์ด๋๊ฐ ๋์ ๋ฌธ์ ์ถ์ ๋น์ค์ ์ค์ด๊ณ , ๊ธฐ๋ณธ์ ์ธ ๋ฌธ์ (Lv 1 ~ Lv 2) ์์ค์ ๋ฌธ์ ๋ฅผ ๋ง์ด ์ถ์ ํ ๋ค, ํด๋น ๋ฌธ์ ์์ ํจ์จ์ฑ ๋ฑ์ ์ถ๊ฐํด ๋ณ๋ณ๋ ฅ์ ์ค์ผ๋ก์จ ํ์คํ๊ฒ ์ด๋ค ์ง์์๋ฅผ ๋ฝ์ผ๋ ค ํ๋์ง๋ฅผ ๋งฅ๋ฝ์ด ์ฌํด๋ ์ ๋ํ ์ ๋ณด์๋ ๋ฌธ์ ๋ค์ด์๋ค๊ณ ์๊ฐํฉ๋๋ค.
์ฐธ๊ณ : 2022 ์นด์นด์ค ์ ์ ๊ณต์ฑ 1์ฐจ ์จ๋ผ์ธ ์ฝ๋ฉ ํ ์คํธ for Tech developers ๋ฌธ์ ํด์ค
(https://tech.kakao.com/2022/01/14/2022-kakao-recruitment-round-1/)