1) ๋ฌธ์ ์ค๋ช
- 1๋ถํฐ n๊น์ง ๋ฒํธ๊ฐ ๋ถ์ด์๋ n๋ช ์ ์ฌ๋์ด ์์ด ๋๋ง์๊ธฐ๋ฅผ ํ๊ณ ์์ต๋๋ค. ์์ด ๋๋ง์๊ธฐ๋ ๋ค์๊ณผ ๊ฐ์ ๊ท์น์ผ๋ก ์งํ๋ฉ๋๋ค.
1. 1๋ฒ๋ถํฐ ๋ฒํธ ์์๋๋ก ํ ์ฌ๋์ฉ ์ฐจ๋ก๋๋ก ๋จ์ด๋ฅผ ๋งํฉ๋๋ค.
2. ๋ง์ง๋ง ์ฌ๋์ด ๋จ์ด๋ฅผ ๋งํ ๋ค์์๋ ๋ค์ 1๋ฒ๋ถํฐ ์์ํฉ๋๋ค.
3. ์์ฌ๋์ด ๋งํ ๋จ์ด์ ๋ง์ง๋ง ๋ฌธ์๋ก ์์ํ๋ ๋จ์ด๋ฅผ ๋งํด์ผ ํฉ๋๋ค.
4. ์ด์ ์ ๋ฑ์ฅํ๋ ๋จ์ด๋ ์ฌ์ฉํ ์ ์์ต๋๋ค.
5. ํ ๊ธ์์ธ ๋จ์ด๋ ์ธ์ ๋์ง ์์ต๋๋ค.
- ๋ค์์ 3๋ช ์ด ๋๋ง์๊ธฐ๋ฅผ ํ๋ ์ํฉ์ ๋ํ๋ ๋๋ค.
tank → kick → know → wheel → land → dream → mother → robot → tank
์ ๋๋ง์๊ธฐ๋ ๋ค์๊ณผ ๊ฐ์ด ์งํ๋ฉ๋๋ค.
1๋ฒ ์ฌ๋์ด ์์ ์ ์ฒซ ๋ฒ์งธ ์ฐจ๋ก์ tank๋ฅผ ๋งํฉ๋๋ค.
2๋ฒ ์ฌ๋์ด ์์ ์ ์ฒซ ๋ฒ์งธ ์ฐจ๋ก์ kick์ ๋งํฉ๋๋ค.
3๋ฒ ์ฌ๋์ด ์์ ์ ์ฒซ ๋ฒ์งธ ์ฐจ๋ก์ know๋ฅผ ๋งํฉ๋๋ค.
1๋ฒ ์ฌ๋์ด ์์ ์ ๋ ๋ฒ์งธ ์ฐจ๋ก์ wheel์ ๋งํฉ๋๋ค.
(๊ณ์ ์งํ)
- ๋๋ง์๊ธฐ๋ฅผ ๊ณ์ ์งํํด ๋๊ฐ๋ค ๋ณด๋ฉด, 3๋ฒ ์ฌ๋์ด ์์ ์ ์ธ ๋ฒ์งธ ์ฐจ๋ก์ ๋งํ tank ๋ผ๋ ๋จ์ด๋ ์ด์ ์ ๋ฑ์ฅํ๋ ๋จ์ด์ด๋ฏ๋ก ํ๋ฝํ๊ฒ ๋ฉ๋๋ค.
- ์ฌ๋์ ์ n๊ณผ ์ฌ๋๋ค์ด ์์๋๋ก ๋งํ ๋จ์ด words ๊ฐ ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง ๋, ๊ฐ์ฅ ๋จผ์ ํ๋ฝํ๋ ์ฌ๋์ ๋ฒํธ์ ๊ทธ ์ฌ๋์ด ์์ ์ ๋ช ๋ฒ์งธ ์ฐจ๋ก์ ํ๋ฝํ๋์ง๋ฅผ ๊ตฌํด์ return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์.
2) ์ ํ ์ฌํญ
- ๋๋ง์๊ธฐ์ ์ฐธ์ฌํ๋ ์ฌ๋์ ์ n์ 2 ์ด์ 10 ์ดํ์ ์์ฐ์์ ๋๋ค.
- words๋ ๋๋ง์๊ธฐ์ ์ฌ์ฉํ ๋จ์ด๋ค์ด ์์๋๋ก ๋ค์ด์๋ ๋ฐฐ์ด์ด๋ฉฐ, ๊ธธ์ด๋ n ์ด์ 100 ์ดํ์ ๋๋ค.
- ๋จ์ด์ ๊ธธ์ด๋ 2 ์ด์ 50 ์ดํ์ ๋๋ค.
- ๋ชจ๋ ๋จ์ด๋ ์ํ๋ฒณ ์๋ฌธ์๋ก๋ง ์ด๋ฃจ์ด์ ธ ์์ต๋๋ค.
- ๋๋ง์๊ธฐ์ ์ฌ์ฉ๋๋ ๋จ์ด์ ๋ป(์๋ฏธ)์ ์ ๊ฒฝ ์ฐ์ง ์์ผ์ ๋ ๋ฉ๋๋ค.
- ์ ๋ต์ [ ๋ฒํธ, ์ฐจ๋ก ] ํํ๋ก return ํด์ฃผ์ธ์.
- ๋ง์ฝ ์ฃผ์ด์ง ๋จ์ด๋ค๋ก ํ๋ฝ์๊ฐ ์๊ธฐ์ง ์๋๋ค๋ฉด, [0, 0]์ return ํด์ฃผ์ธ์.
3) ์ ์ถ๋ ฅ ์์
n words result
3 ["tank", "kick", "know", "wheel", "land", "dream", "mother", "robot", "tank"] [3,3]
5 ["hello", "observe", "effect", "take", "either", "recognize", "encourage", "ensure", "establish", "hang", "gather", "refer", "reference", "estimate", "executive"] [0,0]
2 ["hello", "one", "even", "never", "now", "world", "draw"] [1,3]
4) ์ ์ถ๋ ฅ ์์ ์ค๋ช
์
์ถ๋ ฅ ์ #1
3๋ช
์ ์ฌ๋์ด ๋๋ง์๊ธฐ์ ์ฐธ์ฌํ๊ณ ์์ต๋๋ค.
1๋ฒ ์ฌ๋ : tank, wheel, mother
2๋ฒ ์ฌ๋ : kick, land, robot
3๋ฒ ์ฌ๋ : know, dream, tank
์ ๊ฐ์ ์์๋ก ๋ง์ ํ๊ฒ ๋๋ฉฐ, 3๋ฒ ์ฌ๋์ด ์์ ์ ์ธ ๋ฒ์งธ ์ฐจ๋ก์ ๋งํ tank๋ผ๋ ๋จ์ด๊ฐ 1๋ฒ ์ฌ๋์ด ์์ ์ ์ฒซ ๋ฒ์งธ ์ฐจ๋ก์ ๋งํ tank์ ๊ฐ์ผ๋ฏ๋ก 3๋ฒ ์ฌ๋์ด ์์ ์ ์ธ ๋ฒ์งธ ์ฐจ๋ก๋ก ๋ง์ ํ ๋ ์ฒ์ ํ๋ฝ์๊ฐ ๋์ค๊ฒ ๋ฉ๋๋ค.
์
์ถ๋ ฅ ์ #2
5๋ช
์ ์ฌ๋์ด ๋๋ง์๊ธฐ์ ์ฐธ์ฌํ๊ณ ์์ต๋๋ค.
1๋ฒ ์ฌ๋ : hello, recognize, gather
2๋ฒ ์ฌ๋ : observe, encourage, refer
3๋ฒ ์ฌ๋ : effect, ensure, reference
4๋ฒ ์ฌ๋ : take, establish, estimate
5๋ฒ ์ฌ๋ : either, hang, executive
์ ๊ฐ์ ์์๋ก ๋ง์ ํ๊ฒ ๋๋ฉฐ, ์ด ๊ฒฝ์ฐ๋ ์ฃผ์ด์ง ๋จ์ด๋ก๋ง์ผ๋ก๋ ํ๋ฝ์๊ฐ ๋ฐ์ํ์ง ์์ต๋๋ค. ๋ฐ๋ผ์ [0, 0]์ returnํ๋ฉด ๋ฉ๋๋ค.
์
์ถ๋ ฅ ์ #3
2๋ช
์ ์ฌ๋์ด ๋๋ง์๊ธฐ์ ์ฐธ์ฌํ๊ณ ์์ต๋๋ค.
1๋ฒ ์ฌ๋ : hello, even, now, draw
2๋ฒ ์ฌ๋ : one, never, world
์ ๊ฐ์ ์์๋ก ๋ง์ ํ๊ฒ ๋๋ฉฐ, 1๋ฒ ์ฌ๋์ด ์์ ์ ์ธ ๋ฒ์งธ ์ฐจ๋ก์ 'r'๋ก ์์ํ๋ ๋จ์ด ๋์ , n์ผ๋ก ์์ํ๋ now๋ฅผ ๋งํ๊ธฐ ๋๋ฌธ์ ์ด๋ ์ฒ์ ํ๋ฝ์๊ฐ ๋์ค๊ฒ ๋ฉ๋๋ค.
5) ํ์ด
def solution(n, words):
answer = [0, 0]
# ์ด์ ๋จ์ด ์ ์ฅํ๋ ๋ณ์
prevWord = ""
# ์ค๋ณต ๋จ์ด ํ์ธ์ ์ํ set ์๋ฃํ ์ ์ธ
wordSet = set()
# words ๋ฐฐ์ด๋งํผ ๋ฐ๋ณต
for num, word in enumerate(words, start=1):
# ์ด๋ฏธ ๋๋ง์๊ธฐ์ ์ฌ์ฉ๋ ๋จ์ด๊ฑฐ๋ ์ด์ ๋จ์ด์ ๋ง์ง๋ง ๊ธ์์ ํ์ฌ ๋จ์ด์ ์ฒซ ๊ธ์๊ฐ
# ๋งค์น๋์ง ์๋ ๊ฒฝ์ฐ, ํ๋ฝ
if (word in wordSet) or (num != 1 and prevWord[-1] != word[0]):
first, second = (n, num // n) if num % n == 0 else (num % n, num // n + 1)
return [first, second]
# ๊ทธ๋ ์ง ์๋ค๋ฉด ์ด์ ๋จ์ด ๊ฐฑ์ ํ๊ณ set ์๋ฃํ์ ํด๋น ๋จ์ด ์ถ๊ฐ
prevWord = word
wordSet.add(word)
return answer
[Reference]
ํ๋ก๊ทธ๋๋จธ์ค
์ฝ๋ ์ค์ฌ์ ๊ฐ๋ฐ์ ์ฑ์ฉ. ์คํ ๊ธฐ๋ฐ์ ํฌ์ง์ ๋งค์นญ. ํ๋ก๊ทธ๋๋จธ์ค์ ๊ฐ๋ฐ์ ๋ง์ถคํ ํ๋กํ์ ๋ฑ๋กํ๊ณ , ๋์ ๊ธฐ์ ๊ถํฉ์ด ์ ๋ง๋ ๊ธฐ์ ๋ค์ ๋งค์นญ ๋ฐ์ผ์ธ์.
programmers.co.kr
๋ฐ์ํ
'๐ฏ Coding Test > ์๊ณ ๋ฆฌ์ฆ ํ ์คํธ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ํ๋ก๊ทธ๋๋จธ์ค (Lv 2) - ๊ฒ์ ๋งต ์ต๋จ๊ฑฐ๋ฆฌ (1) | 2023.08.21 |
---|---|
ํ๋ก๊ทธ๋๋จธ์ค (Lv 2) - ๊ตฌ๋ช ๋ณดํธ (1) | 2023.08.17 |
ํ๋ก๊ทธ๋๋จธ์ค (Lv 2) - ์นดํซ (1) | 2023.08.17 |
ํ๋ก๊ทธ๋๋จธ์ค (Lv 2) - ๊ธฐ๋ฅ๊ฐ๋ฐ (1) | 2023.08.17 |
ํ๋ก๊ทธ๋๋จธ์ค (Lv 2) - ํ๋ก์ธ์ค (1) | 2023.08.16 |