ํ์ด ๋ ์ง : 2025.05.08
๋ฌธ์ ์ ํ : Summer/Winter Coding(~2018)
๋ฌธ์ ์ ๋ชฉ : ์์ด ๋๋ง์๊ธฐ
๋ฌธ์ ๋งํฌ : https://school.programmers.co.kr/learn/courses/30/lessons/12981
Intuition
- ๋๋ง์๊ธฐ ๊ฒ์์์ ๊ท์น์ ์ด๊ธด ์ฒซ ๋ฒ์งธ ์ฌ๋์ ๋ฒํธ์ ์ฐจ๋ก๋ฅผ ๋ฐํํด์ผ ํ๋ค. ๊ท์น ์๋ฐ์ ์๋์ ๊ฐ๋ค.
- ์ค๋ณต๋ ๋จ์ด๋ฅผ ์ฌ์ฉํ ๊ฒฝ์ฐ
- ์ด์ ์ฐจ๋ก์์ ๋งํ ๋จ์ด์ ๋ง์ง๋ง ๊ธ์์ ํ์ฌ ๋งํ ๋จ์ด์ ์ฒซ๊ธ์๊ฐ ๋ค๋ฅธ ๊ฒฝ์ฐ
- ์ด์ ์ ์ฌ์ฉํ ๋จ์ด๋ฅผ ์ด๋๊ฐ์ ์ ์ฅํ๊ณ , ๋น ๋ฅด๊ฒ ํ์ํด์ผ ํ๋ค.
- ์ค๋ณต ๋จ์ด๋ฅผ ์ ์ฅํ๊ธฐ ์ ์ ํจ์๊ฐ ๋๋ ๊ฒ์ด๋ฏ๋ก ๋ฐฐ์ด๋ณด๋ค ํ์์ด ๋น ๋ฅธ Set์ด ์ ์ ํ ๊ฒ์ด๋ค.
- ๊ท์น์ ์๋ฐํ ์ฒซ ๋ฒ์งธ ์ฌ๋์ ๋ฒํธ์ ์ฐจ๋ก๋ฅผ ๊ณ์ฐํด์ผ ํ๋ค.
- ํ์ฌ ๋จ์ด์ ์์๋ฅผ 0๋ถํฐ ์์ํด์
i๋ผ๊ณ ํ๊ณ , ์ธ์์ดn๋ช ์ด๋ผ๊ณ ํ ๋, ์๋์ ๊ฐ์ด ์ ์ํ ์ ์๋ค.
๋ฒํธ =i % n + 1
์์ =Math.floor(i / n) + 1
- ํ์ฌ ๋จ์ด์ ์์๋ฅผ 0๋ถํฐ ์์ํด์
Approach
- ์ค๋ณต ๋จ์ด๋ฅผ ์ ์ฅํ Set์ ์ ์ธํ๋ค.
- ๋ฒํธ(num)์ ์์(turn)๋ฅผ ์ ์ฅํ ๋ณ์๋ฅผ 0์ผ๋ก ์ ์ธํ๋ค. (ํ๋ฝ์๊ฐ ์๊ธฐ์ง ์์ผ๋ฉด 0์ผ๋ก ๋ฐํํ๊ธฐ ์ํด)
- set์ ์ฒซ ๋ฒ์งธ ๋จ์ด๋ฅผ ์ถ๊ฐํ๋ค.
- 1๋ฒ ์ธ๋ฑ์ค๋ถํฐ words๋ฅผ for ๋ฃจํ๋ก ์ํํ๋ค.
- ๋ ๊ฐ์ง ๊ท์น์ ํ๋๋ผ๋ ์๋ฐํ๋ค๋ฉด ๋ฒํธ์ ์์๋ฅผ ๊ณ์ฐํ์ฌ ๋ณ์์ ์ ์ฅํ๊ณ for ๋ฃจํ๋ฅผ ์ข
๋ฃํ๋ค.
- ์ค๋ณต๋ ๋จ์ด๋ฅผ ์ฌ์ฉํ ๊ฒฝ์ฐ
- ์ด์ ์ฐจ๋ก์์ ๋งํ ๋จ์ด์ ๋ง์ง๋ง ๊ธ์์ ํ์ฌ ๋งํ ๋จ์ด์ ์ฒซ๊ธ์๊ฐ ๋ค๋ฅธ ๊ฒฝ์ฐ
- ๊ท์น์ ์๋ฐํ์ง ์์๋ค๋ฉด set์ ๋จ์ด๋ฅผ ์ถ๊ฐํ๋ค.
- ๋ ๊ฐ์ง ๊ท์น์ ํ๋๋ผ๋ ์๋ฐํ๋ค๋ฉด ๋ฒํธ์ ์์๋ฅผ ๊ณ์ฐํ์ฌ ๋ณ์์ ์ ์ฅํ๊ณ for ๋ฃจํ๋ฅผ ์ข
๋ฃํ๋ค.
- ๋ฒํธ์ ์์๋ฅผ ๋ฐฐ์ด๋ก ๋ฐํํ๋ค.
Complexity
- Time complexity :
O(w)- words์ ๊ธธ์ด๋ฅผ w๋ผ๊ณ ํ ๋ for ๋ฃจํ์์ ์ต๋ words์ ๊ธธ์ด๋งํผ ์ํํ๋ฏ๋ก O(w)์ด๋ค.
- Splace complexity :
O(w)- words์ ๊ธธ์ด๋ฅผ w๋ผ๊ณ ํ ๋ ๋จ์ด์ ์ค๋ณต์ด ์๋ค๋ฉด Set์ ์ต๋ words์ ๊ธธ์ด๋งํผ ์ ์ฅํ ์ ์๋ค.
- ๊ฐ ๋จ์ด์ ๊ธธ์ด๊ฐ 2~50์ด๋ผ๋ ์กฐ๊ฑด์ด ์์ผ๋ฏ๋ก ์ด๋ ์์ ๋ฒ์๋ก ์ทจ๊ธํ๊ณ , ์ข ํฉ์ ์ผ๋ก O(w)์ด๋ผ๊ณ ๋ณผ ์ ์๋ค.
Code (JS)
function solution(n, words) {
const set = new Set();
let num = 0;
let turn = 0;
// ์ฒซ ๋ฒ์งธ ์์ ๋ฃ๊ณ ์์
set.add(words[0]);
for (let i = 1; i < words.length; i++) {
const isDuplicate = set.has(words[i]);
const isWrong = words[i - 1].at(-1) !== words[i][0];
if (isDuplicate || isWrong) {
num = i % n + 1;
turn = Math.floor(i / n) + 1;
break;
}
set.add(words[i]);
}
return [num, turn];
}'์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ํ์ด > Programmers - Lv.2' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [ํ๋ก๊ทธ๋๋จธ์ค Lv.2] ๊ตฌ๋ช ๋ณดํธ (0) | 2025.05.07 |
|---|---|
| [ํ๋ก๊ทธ๋๋จธ์ค Lv.2] ์ ํ์ ์๊ฐ ์ด๋ (0) | 2025.04.30 |
| [ํ๋ก๊ทธ๋๋จธ์ค Lv.2] ๊ทค ๊ณ ๋ฅด๊ธฐ (1) | 2025.04.30 |
| [ํ๋ก๊ทธ๋๋จธ์ค Lv.2] ๋ฌ๋ฆฌ๊ธฐ ๊ฒฝ์ฃผ (0) | 2025.04.22 |
| [ํ๋ก๊ทธ๋๋จธ์ค Lv.2] ์ซ์์ ํํ (0) | 2025.04.21 |