๐ŸŒžAlgorithm/๐Ÿ”ฅprogrammers

[programmers] ์˜์–ด ๋๋ง์ž‡๊ธฐ - Summer/Winter Coding(~2018)

๋ฟŒ์•ผ._. 2021. 1. 12. 20:40

์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ ์—ฐ์Šต - Summer/Winter Coding(~2018)


<์˜์–ด ๋๋ง์ž‡๊ธฐ>

๋ฌธ์ œ ์„ค๋ช…

 

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 ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด์ฃผ์„ธ์š”.

 

 

์ œํ•œ ์‚ฌํ•ญ

 

- ๋๋ง์ž‡๊ธฐ์— ์ฐธ์—ฌํ•˜๋Š” ์‚ฌ๋žŒ์˜ ์ˆ˜ n์€ 2 ์ด์ƒ 10 ์ดํ•˜์˜ ์ž์—ฐ์ˆ˜์ž…๋‹ˆ๋‹ค.
- words๋Š” ๋๋ง์ž‡๊ธฐ์— ์‚ฌ์šฉํ•œ ๋‹จ์–ด๋“ค์ด ์ˆœ์„œ๋Œ€๋กœ ๋“ค์–ด์žˆ๋Š” ๋ฐฐ์—ด์ด๋ฉฐ, ๊ธธ์ด๋Š” n ์ด์ƒ 100 ์ดํ•˜์ž…๋‹ˆ๋‹ค.
- ๋‹จ์–ด์˜ ๊ธธ์ด๋Š” 2 ์ด์ƒ 50 ์ดํ•˜์ž…๋‹ˆ๋‹ค.
- ๋ชจ๋“  ๋‹จ์–ด๋Š” ์•ŒํŒŒ๋ฒณ ์†Œ๋ฌธ์ž๋กœ๋งŒ ์ด๋ฃจ์–ด์ ธ ์žˆ์Šต๋‹ˆ๋‹ค.
- ๋๋ง์ž‡๊ธฐ์— ์‚ฌ์šฉ๋˜๋Š” ๋‹จ์–ด์˜ ๋œป(์˜๋ฏธ)์€ ์‹ ๊ฒฝ ์“ฐ์ง€ ์•Š์œผ์…”๋„ ๋ฉ๋‹ˆ๋‹ค.
- ์ •๋‹ต์€ [ ๋ฒˆํ˜ธ, ์ฐจ๋ก€ ] ํ˜•ํƒœ๋กœ return ํ•ด์ฃผ์„ธ์š”.
- ๋งŒ์•ฝ ์ฃผ์–ด์ง„ ๋‹จ์–ด๋“ค๋กœ ํƒˆ๋ฝ์ž๊ฐ€ ์ƒ๊ธฐ์ง€ ์•Š๋Š”๋‹ค๋ฉด, [0, 0]์„ return ํ•ด์ฃผ์„ธ์š”.

 

๋ฌธ์ œ ํ’€์ด

  -my solution

def solution(n, words):
    answer = []

    temp=words[0][-1] #์ฒซ๋ฒˆ์งธ ๋‹จ์–ด์˜ ๋ ๋ฌธ์ž
    
    for i in range(1,len(words)):
        forward=words[i][0] #๋‹ค์Œ ๋‹จ์–ด์˜ ์ฒซ ๋ฌธ์ž
        tempwords=words[0:i+1] #์ค‘๋ณต ํ™•์ธ์„ ์œ„ํ•ด list์— ์ €์žฅ
        if(tempwords.count(words[i])>1): #์ค‘๋ณต์ด ์žˆ๋‹ค๋ฉด 
            answer.append(i%n+1) #๋ฒˆํ˜ธ
            answer.append(i//n+1) #์ฐจ๋ก€
            break
        if(forward!=temp): #์ฒซ ๋ฌธ์ž์™€ ๋ ๋ฌธ์ž๊ฐ€ ๊ฐ™์ง€ ์•Š๋‹ค๋ฉด 
            answer.append(i%n+1) #๋ฒˆํ˜ธ
            answer.append(i//n+1) #์ฐจ๋ก€
            break
        temp=words[i][-1] #๋ ๋ฌธ์ž๋ฅผ ํ˜„์žฌ ๋‹จ์–ด์˜ ๋ ๋ฌธ์ž๋กœ ๋ฐ”๊ฟ”์คŒ
        
    if(len(answer)==0): #list์˜ ๊ธธ์ด๊ฐ€ 0์ด๋ฉด ํƒˆ๋ฝ์ž ์—†์Œ
        answer.append(0)
        answer.append(0)
    return answer

  ์ฒ˜์Œ์— ์ด ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๊ณ  ์‹œ๊ฐ„ ์ดˆ๊ณผ๊ฐ€ ๋ฐœ์ƒํ• ๊นŒ๋ด ์กฐ๋งˆ์กฐ๋งˆํ•˜์˜€๋‹ค. ๋‹คํ–‰ํžˆ ์‹œ๊ฐ„ ์ดˆ๊ณผ๋Š” ๋ฐœ์ƒํ•˜์ง€ ์•Š๊ณ , 

ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค 3๋ฌธ์ œ์—์„œ ์‹คํŒจ๊ฐ€ ๋ฐœ์ƒํ•˜์˜€๋‹ค. ์˜ˆ์™ธ ์ƒํ™ฉ์ด ์–ด๋–ค ๊ฒƒ์ด ์กด์žฌํ•˜๋Š”์ง€ ์‚ดํŽด๋ณธ ๊ฒฐ๊ณผ ์ค‘๋ณต ๋‹จ์–ด๋ฅผ

ํ™•์ธํ•  ๋•Œ ์ž์‹ ์˜ ์ˆœ์„œ ์•ž์—์„œ ๋งํ•œ ๊ฒƒ๋“ค๊ณผ ๋น„๊ตํ•ด์•ผ ํ•˜๋Š”๋ฐ ์ „์ฒด list์— ๋Œ€ํ•ด ์ค‘๋ณต์„ ํŒ๋ณ„ํ•˜์—ฌ ์‹คํŒจ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค๋Š” 

๊ฒƒ์„ ์•Œ๊ฒŒ ๋˜์—ˆ๋‹ค. ์ด ๋ถ€๋ถ„์— ๋Œ€ํ•˜์—ฌ ์˜ˆ์™ธ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•ด์ฃผ๋‹ˆ ๋ฌธ์ œ๋ฅผ ํ†ต๊ณผํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.

 

 1) list ๋งจ ์ฒ˜์Œ ๋‹จ์–ด์˜ ๋ ๋ฌธ์ž๋งŒ ์ €์žฅ

 2) list ์ˆœํšŒ (๋‘๋ฒˆ์งธ ๋‹จ์–ด๋ถ€ํ„ฐ)

     2-1) ๋‹จ์–ด์˜ ์ฒซ ๋ฌธ์ž๋ฅผ ์ €์žฅ

     2-2) ๋‹จ์–ด์˜ ์ค‘๋ณต ํ™•์ธ์„ ์œ„ํ•ด ํ˜„์žฌ ์ธ๋ฑ์Šค๊นŒ์ง€์˜ ๋ฌธ์ž๋“ค๋งŒ ๋”ฐ๋กœ list์— ์ €์žฅํ•˜์—ฌ

           ์ค‘๋ณต ํŒ๋ณ„ -> ์ค‘๋ณต์ด ์žˆ๋‹ค๋ฉด ๋ฒˆํ˜ธ์™€ ์ฐจ๋ก€๋ฅผ answer list์— ์ถ”๊ฐ€ํ•œ ํ›„ ์ค‘์ง€

     2-3) ์ฒซ ๋ฌธ์ž์™€ ๋ ๋ฌธ์ž๊ฐ€ ๊ฐ™์ง€ ์•Š๋‹ค๋ฉด -> ํƒˆ๋ฝ์ž ๋ฐœ์ƒ(๋ฒˆํ˜ธ, ์ฐจ๋ก€ answer list์— ์ถ”๊ฐ€ ํ›„ ์ค‘์ง€)

     2-4) ํ˜„์žฌ ์ธ๋ฑ์Šค์˜ ๋‹จ์–ด์˜ ๋ ๋ฌธ์ž์™€ ๋‹ค์Œ ๋‹จ์–ด์˜ ์ฒซ ๋ฌธ์ž๋ฅผ ๋น„๊ต ์œ„ํ•ด ํ˜„์žฌ ์ธ๋ฑ์Šค ๋‹จ์–ด์˜ ๋ ๋ฌธ์ž ์ €์žฅ

 3) answer list์˜ ๊ธธ์ด๊ฐ€ 0์ด๋ฉด -> ํƒˆ๋ฝ์ž๊ฐ€ ์—†์Œ (0,0์„ answer list์— ์ถ”๊ฐ€)


์ถœ์ฒ˜: ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ ์—ฐ์Šต, https://programmers.co.kr/learn/challenges