[Algorithm] - 2019 Kakao Winter internship Coding test ๋ฌธ์ ํ์ด
2๋ ์ ๋ถํฐ ๊ณ์, ์๊ฐ์ด ๋ ๋๋ง๋ค(๊ทธ ์๊ฐ์ด ์ผ๋ง ๋์ง ์์ง๋ง..) ํํ์ด ์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ํ์ด๋ฅผ ๊ณ์ ์ด์ด๊ฐ๊ณ ์์์ต๋๋ค. ๋ค์ํ ๋ฌธ์ ๋ค์ ๋ณด์๊ณ , ์ด๋ ค์ด ๋ฌธ์ , ์๊ฐ์ด ๋ ๊ฒ ๊ฐ์ผ๋ฉด์๋ ๋์ ์ง๊ฐ ์ค๋ ๋ฌธ์ , ์ฝ๊ฒ ํ๋งํ ๋ฌธ์ ๋ค ๋ค์ํ ๋ฌธ์ ๋ค์ด ์กด์ฌํ์์ต๋๋ค.
๊ทธ๋ฌ๋ ์ค, ์๋ ๊ฒจ์ธ์ ์ฌ๋ฏธ์ผ์ ์นด์นด์ค ์ฝ๋ฉ ํ ์คํธ ๋ฌธ์ ๋ฅผ ํ๊ฒ ๋์์ต๋๋ค. ๋ฌธ์ ๋์ด๋๋ ์๊ฐํ ๊ฒ๋ณด๋ค๋ ์กฐ๊ธ ์ด๋ ค์ด ์์ค์ ํด๋นํ์ผ๋ฉฐ ์ด์ฐจํผ ์ฝ๋ฉ ํ ์คํธ์์ ์ข์ ์ฑ์ ์ ๊ฑฐ๋์ง ๋ชปํ๋๋ผ๋ ์ฐจํ์ ๋ฌธ์ ํ์ด ํด์ค์ด ์ฌ๋ผ์ค๊ธฐ ๋๋ฌธ์ ๊ฐ๋ฒผ์ด ๋ง์์ผ๋ก ์ํ์ ์ํ์ต๋๋ค.
ํ์ง๋ง ๋ช ๋ฌ์ด ์ง๋๋ ํด๋น ์ฝ๋ฉํ
์คํธ์ ๋ํ ๋ฌธ์ ํ์ด ํด์ค์ ๋ณด์ด์ง ์์๊ณ , ๊ทธ ํด์ค์ ์ต๊ทผ์์์ผ ๋ฐ๊ฒฌํ๊ฒ ๋์์ต๋๋ค.
(๊ทธ๊ฒ๋ Google ๊ฒ์์ด ์น์ ํ๊ฒ ์ด๊ฒ์ด ์๋ค๋ ๊ฑธ ์๋ ค์คฌ๋ค๋...)
๊ทธ๋์ ์ด๋ฒ ํฌ์คํธ์์๋ 2019๋ ๊ฒจ์ธ ์นด์นด์ค ์ธํด์ญ ์ฝ๋ฉ ํ ์คํธ์ ๋ํ ๋ฌธ์ ์ ํ์ด, ๊ทธ๋ฆฌ๊ณ ์งค๋งํ ํ๊ธฐ์ ๋ํด ๊ฐ๋จํ๊ฒ ์ ์ด๋ณด๊ณ ์ ํฉ๋๋ค.
Question 01. ํฌ๋ ์ธ ์ธํ ๋ฝ๊ธฐ ๊ฒ์
๋ฌธ์ ์๋ฌธ: (https://programmers.co.kr/learn/courses/30/lessons/64061)
๊ฒ์๊ฐ๋ฐ์์ธ ์ฃ ๋ฅด๋๋ ํฌ๋ ์ธ ์ธํ๋ฝ๊ธฐ ๊ธฐ๊ณ๋ฅผ ๋ชจ๋ฐ์ผ ๊ฒ์์ผ๋ก ๋ง๋ค๋ ค๊ณ ํฉ๋๋ค. ์ฃ ๋ฅด๋๋ ๊ฒ์์ ์ฌ๋ฏธ๋ฅผ ๋์ด๊ธฐ ์ํด ํ๋ฉด ๊ตฌ์ฑ๊ณผ ๊ท์น์ ๋ค์๊ณผ ๊ฐ์ด ๊ฒ์ ๋ก์ง์ ๋ฐ์ํ๋ ค๊ณ ํ๋๋ฐ, ๊ฒ์ ํ๋ฉด์ 1 x 1 ํฌ๊ธฐ์ ์นธ๋ค๋ก ์ด๋ฃจ์ด์ง N x N ํฌ๊ธฐ์ ์ ์ฌ๊ฐ ๊ฒฉ์์ด๊ณ , ์์ชฝ์๋ ํฌ๋ ์ธ, ์ค๋ฅธ์ชฝ์๋ ๋ฐ๊ตฌ๋๊ฐ ์์ผ๋ฉฐ ์ธํ ํ ๊ฐ๋น 1 x 1 ํฌ๊ธฐ์ ๊ฒฉ์ ํ ์นธ์ ์ฐจ์งํ๊ณ , ๊ฐ์ฅ ์๋ ์นธ๋ถํฐ ์ฐจ๊ณก์ฐจ๊ณก ์์ฌ์๋ค๊ณ ํฉ๋๋ค.
ํฌ๋ ์ธ ์๋์, ์ธํ์ ๋์น๋ ๊ฒฝ์ฐ๋ ์๊ณ , ๋ฌธ์ ๋ 2์ฐจ์ ๋ฐฐ์ด board์ ์ธํ์ ์ก๊ธฐ ์ํด ํฌ๋ ์ธ์ ์๋์ํจ ์์น ์ขํ๋ฅผ ๋ฐฐ์ด moves์ ๋งค๊ฐ ๋ณ์๋ก ์ฃผ์ด์ง ๋, ํฌ๋ ์ธ์ ๋ชจ๋ ์๋์ํจ ํ, ํฐ๋จ๋ ค์ ์ฌ๋ผ์ง ์ธํ์ ๊ฐฏ์๋ฅผ returnํ๋ ์๊ณ ๋ฆฌ์ฆ์ ๊ตฌํํ๋ ๋ฌธ์ ์ ๋๋ค.
(๊ธ ๋ถ๋์ ์ํด์ ์์ธํ ์ ํ ์ฌํญ๊ณผ ๋ฌธ์ ์ ๋ํ ์ ์ฝ ์ฌํญ์ ๋ํด์๋ ์๋ตํ๋๋ก ํ๊ฒ ์ต๋๋ค.)
Solution for Question 01
์ด ๋ฌธ์ ๋ ์ ๋ํก ๊ฒ์๊ณผ ๋น์ทํ ์ ํ์ ๋ฌธ์ ์ ๋๋ค. ์ ๋ํก์ ๊ฒฝ์ฐ ๊ฐ๋ก, ์ธ๋ก, ๊ฐ์ ์บ๋ฆญํฐ์ 3๊ฐ๋ฅผ ํฐ๋จ๋ฆฌ๋ ๊ฒ์ด์ง๋ง, ์ด ๊ฒ์์ 1 x 1 ํฌ๊ธฐ์ ๋ฐฐ์ด์์ ๊ฐ์ ์บ๋ฆญํฐ๋ฅผ ๋ ๊ฐ ๋ง๋๋ฉด ํฐ๋จ๋ฆฌ๋ ๊ฐฏ์๋ฅผ ๊ตฌํ๊ธฐ๋ง ํ๋ฉด ๋๋ ๋ฌธ์ ์ ๋๋ค.
์ ์ด๋ฏธ์ง์์ ์กฐ๊ธ ํํธ๋ฅผ ์ป์ ์ ์์ต๋๋ค. ํฌ๋ ์ธ ๋ฐ๋ก ๋ฐ์ ๊ทธ๋ ค์ง 5 x 5 ํฌ๊ธฐ์ ๊ฒฉ์๋ boards๋ผ๋ ๋งค๊ฐ ๋ณ์์์ ์ฃผ์ด์ง๊ธฐ ๋๋ฌธ์ ์ฐ๋ฆฌ๋ ์ด๋ฅผ ์ ๊ฒฝ์ฐ์ง ์์๋ ๋ฉ๋๋ค. ์์ ์๋ ์์ง์ฌ์ ์ฌ๋ผ์ง๋ ์นด์นด์ค ์บ๋ฆญํฐ๋ค์ ์๋ณด๋ฉด, Stack์ด๋ผ๋ ์๋ฃ๊ตฌ์กฐ์ ์์ง์ด๋ ๋ชจ์ต์ด ๋งค์ฐ ํก์ฌํฉ๋๋ค. ๋์ค์ ์์ธ ์ ๋ค์ด ์์๋๋ก ์์ด์ง๋ Last in First Out (LIFO) ํํ์ด์ง์.
๋ฐ๋ผ์ ์๋์ ๊ฐ์ ํํ๋ก ์ฝ๋๋ฅผ ๊ตฌํํ ์ ์์ต๋๋ค.
๋จผ์ ์ขํ๋ฅผ ๋ณด๊ธฐ ์ ์, ์ธํ ๋ณด๋๋ฅผ ํ์ํ๋ ๊ฒ๋ถํฐ ์์ํ์ฌ ์ ๋ ฅ๋ ์ขํ๋ฅผ ๋ณด๊ณ , ํ๋์ฉ ์ธํ์ ๋ฃ์ด์ฃผ๋ ๋ฐฉ์์ผ๋ก ์๊ณ ๋ฆฌ์ฆ์ ๊ตฌํํ๋ฉด ๋ฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ , ์ธํ์ ๋ฃ๊ณ ๋์, ๋ฃ์ด์ง ์ธํ์ ๊ฒ์ฌํ์ฌ ๊ฐ์ ์ธํ์ด๋ฉด ๊ทธ์ ๊ฐฏ์๋ฅผ ์ถ๊ฐํด์ ๋ฃ์ด์ฃผ๋ฉด ์ฝ๊ฒ ๊ตฌํ ์ ์์ต๋๋ค.
Question 02. ํํ
๋ฌธ์ ์๋ฌธ: (https://programmers.co.kr/learn/courses/30/lessons/64065)
์ ์ ์๋ ์๋์ ์์์๋ ์ด๊ฑฐ ๋๋ ์ด๋ค ์์๋ฅผ ๋ฐ๋ฅด๋ ์์๋ค์ ๋ชจ์์ ํํ(tuple)์ด๋ผ๊ณ ํฉ๋๋ค. n๊ฐ์ ์์๋ฅผ ๊ฐ์ง ํํ์ n-ํํ(n-tuple)์ด๋ผ๊ณ ํ๋ฉฐ, ์ด ํํ์ ์ด์ฉํด ์์์ ๊ฐ์๊ฐ n๊ฐ์ด๊ณ , ์ค๋ณต๋ ์์๊ฐ ์๋ ํํ์ด ์ฃผ์ด์ง ๋, ๋งค๊ฐ๋ณ์์ ํํ์ ๋ฐฐ์ด์ ๋ด์ ๋ฐํํ๋๋ก ํ๋ ์๊ณ ๋ฆฌ์ฆ์ ๊ตฌํํ๋ ๋ฌธ์ ์ ๋๋ค.
Solution for Question 02
์ฒ์ ์ด ๋ฌธ์ ๋ฅผ ํ์์ ๋ ๊ฐ์ธ์ ์ผ๋ก ์ดํด๊ฐ ์ข ๋ง์ด ํ๋ค์์ต๋๋ค. ํํ์ด๋ผ๋ ๊ฒ์ ์ ์ ์๋ ์๋์ ์์ ์๋ ์ด๊ฑฐ ๋๋ ์ด๋ค ์์๋ผ๋ ๋ฐ, ์ฌ์ค ์ฌ๊ธฐ์๋ถํฐ ๋์ ์ง๊ฐ ์์ต๋๋ค..
์์๋ผ๊ณ ํ๋ค๋ฉด, ์์๋๋ก ๋ฐฐ์นํ๋ ๊ฒ๋ง์ ์๊ฐํ๊ธฐ ๋๋ฌธ์ด ์๋ชป์ด๋ผ๊ณ ์๊ฐํ์๊ณ , ํํ์ด๋ผ๋ ๊ฒ์ ๋ฌธ์ ์์ ์์๋ก ์ฃผ์ด์ง๋ ๊ฒ์ ๋ดค์ ๋, ์์ ์ซ์๊ฐ ์ฃผ์ด์ง๋ฉด ๊ทธ ๋ค์ ์ซ์๊ฐ ํ๋์ฉ ์๊ธฐ๋ ๊ฒ์ผ๋ก ๋ด์๋ ๋ค์ ๋ฐฐ์ด ํํ์ ์์๋ฅผ ํ๋์ฉ ๋นผ๋ ํํ๋ผ๊ณ ๋ณด๋ฉด ์ฝ๊ฒ ์๊ฐํ ์ ์์๋๋ฐ, ์ด ๋ถ๋ถ์ ํด์ค์ด ๋์ค๊ณ ๋ ๋ค์ ์๊ฒ ๋์ด์ ์กฐ๊ธ ์์ฌ์์ด ๋ง์ด ๋จ๋ ๋ฌธ์ ์์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ , ์ด ๋ฌธ์ ์ ํน์ง์ ๋งค๊ฐ ๋ณ์๊ฐ Array(๋ฐฐ์ด) ํํ๊ฐ ์๋ String(๋ฌธ์์ด) ํํ๋ก ์ฃผ์ด์ง๊ธฐ ๋๋ฌธ์ ๋จผ์ ์ด ๋ฌธ์์ด ํํ๋ก ๋์ด ์๋ ๋งค๊ฐ ๋ณ์๋ฅผ ๊ฐ๊ฐ์ ์์๋ก ๋ถ๋ฆฌํ์ฌ ๋ฐฐ์ด๋ก ๋ง๋ค์ด์ผ ํฉ๋๋ค.
๊ฐ๊ฐ์ ์งํฉ๋ค์ด ๊ดํธ๋ก ๊ตฌ๋ถ๋์ด ์๊ณ , ๊ทธ ์์๋ค์ ์ผํ๋ก ๊ตฌ๋ถ๋์ด ์๊ธฐ ๋๋ฌธ์ Java์์๋ String ํด๋์ค์์ ์ ๊ณตํ๋ split ๋ฉ์๋๋ฅผ ์ด์ฉํ๋ฉด ์ฝ๊ฒ ๊ตฌ๋ถ์ง์ ์ ์์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ , ๊ฐ ์ซ์๋ค์ String์ ๋ฌธ์์ด ํํ์ธ๋ฐ, ์ด๋ฅผ ์ ์ ํํ๋ก ๋ฐ๊ฟ์ค์ผ ํฉ๋๋ค. ๋ณต์กํ๊ฒ ํ๋ค๋ฉด, ๊ฐ ๋ฐ๋ณต๋ฌธ์ ๋์์ ์ง์ ์๋ฃํ์ ๋ฐ๊พธ๋ ๋ฐฉ๋ฒ๋ ์๊ฒ ์ง๋ง ๊ธฐ์ Java 8์ ์ฌ์ฉํ ๊ฒ์ด๋ผ๋ฉด Stream์ ์ฌ์ฉํ๋ค๋ฉด ๋ ๊ฐ๊ฒฐํ ์ฝ๋๋ก ์์ฑํ ์ ์๊ฒ ์ฃ .
๋ง์ง๋ง์ผ๋ก ํด์ค์ ๋์์๋๋๋ก ๋ฌธ์ ํ์ด๋ฅผ ์งํํ๊ธฐ ์ํด ๋ฆฌ์คํธ๋ฅผ ํํ์ ๊ฐฏ์์ ๋ง์ถฐ ์ ๋ ฌ์ ํด์ฃผ๋๋ก ํ๋ฉด ์ ์ฒ๋ฆฌ๋ ๋ชจ๋ ๋์ ๋๋ค.
๋ฆฌ์คํธ๋ฅผ ์ ๋ ฌํด์ค ์ด์ ๋ Solution ๋ฉ์๋๋ฅผ ์ข ๋ ์ฝ๊ฒ ๊ตฌํํ๋ ๋ฐ๋ ํ ๋ชซํฉ๋๋ค. ์์๋ฅผ ๋ณด๋ฉด, ์งํฉ์ ๊ธธ์ด๊ฐ 1์ธ ์ฒซ ๋ฒ์งธ ๋ฐฐ์ด์ด ํํ์ 1๋ฒ์งธ ์์๋ฅผ ๊ฐ๋ฆฌํค๊ธฐ ๋๋ฌธ์ ๋๋ค. ์์ชฝ์์๋ถํฐ ์์ ์๋ฅผ ์ฃผ๊ณ , ๋ค์์ ๋ ์งํฉ์ ์ฐจ์งํฉ์ ๊ตฌํด์ฃผ๋ฉด์, ์์๋ค์ ํ๋์ฉ ์ถ๊ฐํด์ฃผ๋ ๋ฐฉ์์ผ๋ก ๊ตฌํ๋ค๋ฉด ์ํ๋ ํํ ํํ๊ฐ ๋์ค๊ฒ ๋ฉ๋๋ค.
๊ทธ๋ฐ๋ฐ, ํ ์คํธ์์๋ Integer List๊ฐ ์๋ int array๋ก ๋ฐํํ๋ ๊ฒ์ ์๊ตฌํ๊ธฐ ๋๋ฌธ์ ์ด ๋ํ Java 8์ Stream์ ์ฌ์ฉํ๋ค๋ฉด ์ฝ๊ฒ ๋ณํํ ์ ์์ต๋๋ค.
Question 03. ๋ถ๋ ์ฌ์ฉ์
๋ฌธ์ ์๋ฌธ: (https://programmers.co.kr/learn/courses/30/lessons/64064)
๊ฐ๋ฐํ ๋ด์์ ์ด๋ฒคํธ ๊ฐ๋ฐ์ ๋ด๋นํ๊ณ ์๋ ๋ฌด์ง๋ ์ต๊ทผ ์งํ๋ ์นด์นด์ค์ด๋ชจํฐ์ฝ ์ด๋ฒคํธ์ ๋น์ ์์ ์ธ ๋ฐฉ๋ฒ์ผ๋ก ๋น์ฒจ์ ์๋ํ ์๋ชจ์๋ค์ ๋ฐ๊ฒฌํ์์ต๋๋ค. ์ด๋ฐ ์๋ชจ์๋ค์ ๋ฐ๋ก ๋ชจ์ ๋ถ๋ ์ฌ์ฉ์๋ผ๋ ์ด๋ฆ์ผ๋ก ๋ชฉ๋ก์ ๋ง๋ค์ด์ ๋น์ฒจ ์ฒ๋ฆฌ ์ ์ ์ธํ๋๋ก ์ด๋ฒคํธ ๋น์ฒจ์ ๋ด๋น์์ธ ํ๋ก๋ ์๊ฒ ์ ๋ฌํ๋ ค๊ณ ํฉ๋๋ค. ์ด ๋ ๊ฐ์ธ์ ๋ณด ๋ณดํธ์ ์ํด ์ฌ์ฉ์ ์์ด๋ ์ค ์ผ๋ถ ๋ฌธ์๋ฅผ '*' ๋ฌธ์๋ก ๊ฐ๋ ค์ ์ ๋ฌํ์ต๋๋ค. ๊ฐ๋ฆฌ๊ณ ์ ํ๋ ๋ฌธ์ ํ๋์ '*' ๋ฌธ์ ํ๋๋ฅผ ์ฌ์ฉํ์๊ณ ์์ด๋ ๋น ์ต์ ํ๋ ์ด์์ '*' ๋ฌธ์๋ฅผ ์ฌ์ฉํ์์ต๋๋ค. ๋ฌด์ง์ ํ๋ก๋๋ ๋ถ๋ ์ฌ์ฉ์ ๋ชฉ๋ก์ ๋งคํ๋ ์๋ชจ์ ์์ด๋๋ฅผ ์ ์ฌ ์์ด๋ ๋ผ๊ณ ๋ถ๋ฅด๊ธฐ๋ก ํ์์ต๋๋ค.
์ด๋ฒคํธ ์๋ชจ์ ์์ด๋ ๋ชฉ๋ก์ด ๋ด๊ธด ๋ฐฐ์ด user_id์ ๋ถ๋ ์ฌ์ฉ์ ์์ด๋ ๋ชฉ๋ก์ด ๋ด๊ธด ๋ฐฐ์ด banned_id๊ฐ ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง ๋, ๋น์ฒจ์์ ์ ์ธ๋์ด์ผ ํ ์ ์ฌ ์์ด๋ ๋ชฉ๋ก์ ๋ช๊ฐ์ง ๊ฒฝ์ฐ์ ์๊ฐ ๊ฐ๋ฅํ ์ง return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์.
Solution for Question 03
์ด ๋ฌธ์ ๋ํ ๋ช ๊ฐ์ง ํจ์ ์ด ๋ง์ด ์์ต๋๋ค. ๊ฐ์ ํจํด์ด ์ฃผ์ด์ง ์๋ ์๋๋ฐ, ์ฌ๊ธฐ์ ์ค์ํ ๊ฒ์ ์ค๋ณต๋์ด ์๋ ํจํด์ ๋ฐ๋ผ ์ค๋ณต๋ ์์ด๋๊ฐ ์ฃผ์ด์ง๋ฉด ์ ๋๋ค๋ ๊ฒ์ ๋๋ค.
๊ทธ๋๋ง ๋ถํ ์ค ๋คํ์ธ ๊ฒ์ ๋ฐฐ์ด์ ํฌ๊ธฐ๊ฐ 1 ~ 8๋ก ์ ํ๋์ด ์์ด, ์์ ํ์ ์๊ณ ๋ฆฌ์ฆ์ผ๋ก ์ง๋ ์ ์ฝ์ ๋ฐ์ง ์๋๋ค๋ ๊ฒ์ ๋๋ค. ๋ฐ๋ผ์ ๋ชจ๋ ๊ฒฝ์ฐ๋ฅผ ์ ๋ถ ํ์ํ๋ ์๊ณ ๋ฆฌ์ฆ์ผ๋ก ๊ฐ๋ค๋ฉด ์ฝ๊ฒ ํ ์ ์๋ ๋ฌธ์ ์์ต๋๋ค.
Java์์๋ matches์ replace ๋ฉ์๋๋ฅผ ์ด์ฉํด ์ ๊ท์์ผ๋ก ์ํ๋ ํจํด์ ๋งค์นญ๋๋ ๋ฌธ์์ด์ ์ฐพ์ ์ ์๋ ๋ฐฉ๋ฒ์ด ์์ต๋๋ค. ์ด ๋ฐฉ๋ฒ์ ์์ฉํ๋ฉด์ ์ฌ๊ท ์๊ณ ๋ฆฌ์ฆ์ ๊ตฌํํ ์ ์์ต๋๋ค.
๊ทธ๋ฐ๋ฐ, ์ ๋ ์ฌ๊ธฐ์ ๋นํธ ์ฐ์ฐ์ ๋ํ์์ต๋๋ค. ๊ทธ ์ด์ ๋ ๊ฐ๊ฐ์ ์์ด๋๊ฐ ์ค๋ณต์ด ๋ ์๋ ์์ด๋, ํจํด์ ์ค๋ณต์ด ๋์ด, ๋ ์์ด๋๊ฐ ๋ค์ด๊ฐ ์๋ ์๊ธฐ ๋๋ฌธ์ด์์ต๋๋ค. ๊ฐ Index์ 2์ ๋ฐฐ์๊ผด๋ก ์ทจํด์ง๋ ๋นํธ ์ฐ์ฐ์ ํตํ์ฌ ๊ฐ๊ฐ์ ID๋ฅผ ๋ํ๋ค๋ฉด ์๋ก๊ฐ ๋ค๋ฅธ ์งํฉ์ผ๋ก ๋ถ๋ฅ ๊ณ์ฐ๋ ๊ฒฐ๊ณผ๊ฐ ๋์ฌ ์ ์์ต๋๋ค.
Question 04. ํธํ ๋ฐฉ ๋ฐฐ์
๋ฌธ์ ์๋ฌธ: (https://programmers.co.kr/learn/courses/30/lessons/64063)
์ค๋ ธ์ฐํ์ด์์ ํธํ ์ ์ด์ํ๊ณ ์๋ ์ค์นดํผ๋ ํธํ ์ ํฌ์ํ๋ ค๋ ๊ณ ๊ฐ๋ค์๊ฒ ๋ฐฉ์ ๋ฐฐ์ ํ๋ ค ํฉ๋๋ค. ํธํ ์๋ ๋ฐฉ์ด ์ด k๊ฐ ์์ผ๋ฉฐ, ๊ฐ๊ฐ์ ๋ฐฉ์ 1๋ฒ๋ถํฐ k๋ฒ๊น์ง ๋ฒํธ๋ก ๊ตฌ๋ถํ๊ณ ์์ต๋๋ค. ์ฒ์์๋ ๋ชจ๋ ๋ฐฉ์ด ๋น์ด ์์ผ๋ฉฐ ์ค์นดํผ๋ ๋ค์๊ณผ ๊ฐ์ ๊ท์น์ ๋ฐ๋ผ ๊ณ ๊ฐ์๊ฒ ๋ฐฉ์ ๋ฐฐ์ ํ๋ ค๊ณ ํฉ๋๋ค.
- ํ ๋ฒ์ ํ ๋ช ์ฉ ์ ์ฒญํ ์์๋๋ก ๋ฐฉ์ ๋ฐฐ์ ํฉ๋๋ค.
- ๊ณ ๊ฐ์ ํฌ์ํ๊ธฐ ์ํ๋ ๋ฐฉ ๋ฒํธ๋ฅผ ์ ์ถํฉ๋๋ค.
- ๊ณ ๊ฐ์ด ์ํ๋ ๋ฐฉ์ด ๋น์ด ์๋ค๋ฉด ์ฆ์ ๋ฐฐ์ ํฉ๋๋ค.
- ๊ณ ๊ฐ์ด ์ํ๋ ๋ฐฉ์ด ์ด๋ฏธ ๋ฐฐ์ ๋์ด ์์ผ๋ฉด ์ํ๋ ๋ฐฉ๋ณด๋ค ๋ฒํธ๊ฐ ํฌ๋ฉด์ ๋น์ด์๋ ๋ฐฉ ์ค ๊ฐ์ฅ ๋ฒํธ๊ฐ ์์ ๋ฐฉ์ ๋ฐฐ์ ํฉ๋๋ค.
์ ์ฒด ๋ฐฉ ๊ฐ์ k์ ๊ณ ๊ฐ๋ค์ด ์ํ๋ ๋ฐฉ ๋ฒํธ๊ฐ ์์๋๋ก ๋ค์ด์๋ ๋ฐฐ์ด room_number๊ฐ ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง ๋, ๊ฐ ๊ณ ๊ฐ์๊ฒ ๋ฐฐ์ ๋๋ ๋ฐฉ ๋ฒํธ๋ฅผ ์์๋๋ก ๋ฐฐ์ด์ ๋ด์ return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์.
Solution for Question 04
4๋ฒ ๋ฌธ์ ๋ถํฐ๋ ํจ์จ์ฑ ํ ์คํธ๋ฅผ ๊ฒธํ๋ ๋ฌธ์ ๊ฐ ๋์ค๊ฒ ๋ฉ๋๋ค. ์ด ๋๋ถํฐ ์ฝ๊ฒ ์๊ณ ๋ฆฌ์ฆ์ ๊ตฌํํด์ ์ ์ถํ๋ฉด ๋ญํจ๋ฅผ ๋ณด๊ฒ ๋์ง์. ๊ทธ๋์ ์ฒ์์ ์ ์ถํ์ ๋ ์๋์ ์ฝ๋๋ก ๊ตฌํํด์ ์ ์ถํ์์ต๋๋ค.
๋ฐฉ ๋ฆฌ์คํธ๋ฅผ Map์ผ๋ก ๋ง๋ค๊ณ , ํด๋น ๋ฐฉ์ด ์์ฝ๋์ด ์๋์ง๋ฅผ Bool ๊ฐ์ ํตํด์ ํ์ธํ๋ ํ์์ผ๋ก ๋ง๋ค์ด์, ๋ฐฐ์ ๋ ๋ฐฉ์ผ ๊ฒฝ์ฐ์๋ Java 8์ Stream์ ์ฌ์ฉํ์ฌ ํ๋ณด ๋ฐฉ ๋ฆฌ์คํธ ์ค ๊ฐ์ฅ ์์ ๋ฐฉ์ ๊ฒฐ์ ํ๋ ์์ผ๋ก ํ๋ค๋ฉด ์ฝ๊ฒ ๊ตฌํ ์ ์์ ๊ฑฐ๋ผ๊ณ ์๊ฐํ์ต๋๋ค.
ํ์ง๋ง ์ญ์ ํจ์จ์ฑ ํ ์คํธ ์ ๋ถ ํต๊ณผ๋ฅผ ํ์ง ๋ชปํ์๊ณ , ์ฌ๋ฌ ๋ฐฉ๋ฉด์ผ๋ก ๊ณ ๋ฏผํ ๋์ Map์ด ์ญ์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋ง์ด ๋จน๋๋ค๊ณ ์๊ฐํ์ฌ ๋ ๋ฒ์งธ ๋ฐฉ๋ฒ์ผ๋ก ๋ฐฐ์ด์ ์ฌ์ฉํ์ฌ ๊ตฌ๋ถํ๋ฉด ์กฐ๊ธ ๋์์ง ๊ฒ์ด๋ค๋ ์๊ฐ์ ํ์์ง๋ง ์ด ์ญ์, ํจ์จ์ฑ ํ ์คํธ 1~2๊ฐ๋ง ํต๊ณผํ๊ณ , ์ฝ์ฌ๋ฆฌ ํต๊ณผ๋์ง ์์์ต๋๋ค.
๋ง์ง๋ง์ผ๋ก ํด์ค์ ๋ณด๊ฒ ๋์๊ณ , ํด์ค์์๋ ๋จ์์๋ ๋ฐฉ์ ์ ๋ถ ํ์ํ ๊ฒ์ด ์๋๋ผ, ์์ฝ๋ ๋ฐฉ์ ์ ์ธํ ๋๋จธ์ง ๋ฐฉ์ ๊ฐ ๋ฐฉ ๋ฒํธ์ ๋จ๊ฒจ์ฃผ๊ณ , ๊ทธ ๋ฐฉ๋ถํฐ ํ์ํ๊ฒ ํ๋ ๋ฐฉ๋ฒ์ ๊ถํ์์ต๋๋ค.
๋ฐฉ์ ์ ๋ถ ํ์ํ๊ฒ ๋๋ฉด, ๊ณ ๊ฐ์ด ์ํ๋ ๋ฐฉ ๋ฟ๋ง ์๋๋ผ, ์ด๋ฏธ ์์ฝ๋ ๋ฐฉ์ ์ ๋ถ๋ฅผ ๋ค์ ์กฐํํ๊ฒ ๋๋ ๋ถ์์ฌ๊ฐ ์ผ์ด๋๋ ๊ฒ์ ์๊ฐํ์ฌ์ผ ํ๋ค๋ ๊น์ ๊ตํ์ ๊นจ๋ซ๊ฒ ํด์ค ๋ฌธ์ ์์ต๋๋ค.
Question 05. ์ง๊ฒ๋ค๋ฆฌ ๊ฑด๋๊ธฐ
๋ฌธ์ ์๋ฌธ: (https://programmers.co.kr/learn/courses/30/lessons/64062)
์นด์นด์ค ์ด๋ฑํ๊ต์ ๋๋์ฆ ์น๊ตฌ๋ค์ด ๋ผ์ด์ธ ์ ์๋๊ณผ ํจ๊ป ๊ฐ์ ์ํ์ ๊ฐ๋ ์ค์ ์ง๊ฒ๋ค๋ฆฌ๊ฐ ์๋ ๊ฐ์ธ์ ๋ง๋์ ๊ฑด๋ํธ์ผ๋ก ๊ฑด๋๋ ค๊ณ ํฉ๋๋ค. ๋ผ์ด์ธ ์ ์๋์ ๋๋์ฆ ์น๊ตฌ๋ค์ด ๋ฌด์ฌํ ์ง๊ฒ๋ค๋ฆฌ๋ฅผ ๊ฑด๋ ์ ์๋๋ก ๋ค์๊ณผ ๊ฐ์ด ๊ท์น์ ๋ง๋ค์์ต๋๋ค.
- ์ง๊ฒ๋ค๋ฆฌ๋ ์ผ๋ ฌ๋ก ๋์ฌ ์๊ณ ๊ฐ ์ง๊ฒ๋ค๋ฆฌ์ ๋๋ค๋์๋ ๋ชจ๋ ์ซ์๊ฐ ์ ํ ์์ผ๋ฉฐ ๋๋ค๋์ ์ซ์๋ ํ ๋ฒ ๋ฐ์ ๋๋ง๋ค 1์ฉ ์ค์ด๋ญ๋๋ค.
- ๋๋ค๋์ ์ซ์๊ฐ 0์ด ๋๋ฉด ๋ ์ด์ ๋ฐ์ ์ ์์ผ๋ฉฐ ์ด๋๋ ๊ทธ ๋ค์ ๋๋ค๋๋ก ํ๋ฒ์ ์ฌ๋ฌ ์นธ์ ๊ฑด๋ ๋ธ ์ ์์ต๋๋ค.
- ๋จ, ๋ค์์ผ๋ก ๋ฐ์ ์ ์๋ ๋๋ค๋์ด ์ฌ๋ฌ ๊ฐ์ธ ๊ฒฝ์ฐ ๋ฌด์กฐ๊ฑด ๊ฐ์ฅ ๊ฐ๊น์ด ๋๋ค๋๋ก๋ง ๊ฑด๋๋ธ ์ ์์ต๋๋ค.
๋๋์ฆ ์น๊ตฌ๋ค์ ๊ฐ์ธ์ ์ผ์ชฝ์ ์์ผ๋ฉฐ, ๊ฐ์ธ์ ์ค๋ฅธ์ชฝ ๊ฑด๋ํธ์ ๋์ฐฉํด์ผ ์ง๊ฒ๋ค๋ฆฌ๋ฅผ ๊ฑด๋ ๊ฒ์ผ๋ก ์ธ์ ํฉ๋๋ค.
๋๋์ฆ ์น๊ตฌ๋ค์ ํ ๋ฒ์ ํ ๋ช
์ฉ ์ง๊ฒ๋ค๋ฆฌ๋ฅผ ๊ฑด๋์ผ ํ๋ฉฐ, ํ ์น๊ตฌ๊ฐ ์ง๊ฒ๋ค๋ฆฌ๋ฅผ ๋ชจ๋ ๊ฑด๋ ํ์ ๊ทธ ๋ค์ ์น๊ตฌ๊ฐ ๊ฑด๋๊ธฐ ์์ํฉ๋๋ค.
๋๋ค๋์ ์ ํ ์ซ์๊ฐ ์์๋๋ก ๋ด๊ธด ๋ฐฐ์ด stones์ ํ ๋ฒ์ ๊ฑด๋๋ธ ์ ์๋ ๋๋ค๋์ ์ต๋ ์นธ์ k๊ฐ ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง ๋, ์ต๋ ๋ช ๋ช ๊น์ง ์ง๊ฒ๋ค๋ฆฌ๋ฅผ ๊ฑด๋ ์ ์๋์ง return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์.
Solution for Question 05
5๋ฒ ๋ฌธ์ ์ญ์, ํจ์จ์ฑ ํ ์คํธ๋ฅผ ๊ฐ์ด ๋ณด๊ธฐ ๋๋ฌธ์ ์ผ๋ฐ์ ์ธ ๋ฐฉ๋ฒ์ผ๋ก ๋ฌธ์ ๋ฅผ ์ ๊ทผํ๊ธฐ์ ํ๊ธฐ ์ด๋ ค์ด ๋ฌธ์ ์์ต๋๋ค.
๊ฐ์ฅ ์ฌ์ด ๋ฐฉ๋ฒ์ k๋ฅผ Life๋ก ๋๊ณ , ๊ทธ๋ค์ ๊ฐ ์ค 0์ ๋ง๋๊ฒ ๋๋ฉด, Life๋ฅผ ๊ฐ์ํ๋ ํ์์ผ๋ก ์ ๊ทผํ๋ ๋ฐฉ๋ฒ์ ๋๋ค. ๊ทธ๋ฌ๊ณ ๋ชจ๋ ๋์ ํต๊ณผํ๋ค๋ฉด, ์น๋ฆฌ ์๋ฅผ ์ฌ๋ฆฌ๋ฉด ๊ฑด๋๋ ์ฌ๋์ ์ด ํฉ์ด ๋์ค๊ฒ ๋๊ฒ ์ฃ .
๊ทธ๋ฌ๋ ์ด ๋ฐฉ๋ฒ์ O(n^2)์ ์๊ฐ๋ณต์ก๋๋ฅผ ๊ฐ์ง๊ธฐ ๋๋ฌธ์ 200,000๊ฐ ๋ฐฐ์ด ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๊ธฐ์๋ ์ญ๋ถ์กฑ์ด์์ต๋๋ค ใ ใ .
๊ทธ๋ ๋ค๋ฉด ์ด์ฐจํผ k์ ๊ฐฏ์๋งํผ 0์ด ๋์ด, ๋ชป๊ฑด๋๊ฐ๊ฒ ๋ ๊ฒฝ์ฐ๊ฐ ๊ฐ์ฅ ๋จผ์ ํจ๋ฐฐ๋ ๊ฐ๋ฅ์ฑ์ด ํฌ๋ฏ๋ก, ๋ชจ๋ ๊ฒฝ์ฐ์ ์๋ฅผ ์ ๋ถ ํ์ํ์ง ๋ง๊ณ , k์ ๊ตฌ๊ฐ๋งํผ ๊ณ์ฐํ์ฌ ๊ทธ๋ค ์ค ๊ฐ์ฅ ์์ ๋์ ์ซ์๋ฅผ ๊ตฌํ๋ฉด ์ต์ํ์ ๋์ด๊ฐ ์ ์๋ ์ฌ๋์ด ๋์ฌ ๊ฒ์ ๋๋ค.
๋ง์น๋ฉฐ...
์นด์นด์ค์ ์ฝ๋ฉ ํ ์คํธ๋ ์ธ์ ๋ ํ์ด๋ด๋ ์ ์ ํจ๊ณผ ์์ฌ์์ด ๋ง์ด ๋จ๋ ๋ฌธ์ ๋ผ๊ณ ์๊ฐํฉ๋๋ค. ์ฌ๋ฌ ์ ํ์ ๋ฌธ์ ๋ค์ด ๋์ ์ฌ์ด ์ ํ์ ํ๋ฉด, ๋ฟ๋ฏํจ์ด ๋๊ปด์ง๋ ๋ฐ๋ฉด, ํจ์จ์ฑ ํ ์คํธ์์๋ ์ต์ ํ์ ๋ํ ์๊ฐ์ ๋ง์ด ํ์ง ๋ชปํด ์์ฌ์์ด ๋จ๊ณ , ์์ ์ ํ๋ ํ ์คํธ ์กฐ์ฐจ๋ ๋ชป ํผ ๋ฌธ์ ๋ ์ฐจํ ํด์ค์ ๋ณด๋ฉด, ์ด๋ฐ ๋ฌธ์ ์๊ตฌ๋ ๋ผ๋ ๊ฒ์ ์ ์๋ ์๊ธฐ ๋๋ฌธ์ ๋๋ค.
์ถ์ฒ: https://tech.kakao.com/2020/04/01/2019-internship-test/