์ฝ”ํ…Œ์ค€๋น„

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค. ์˜์–ด ๋๋ง์ž‡๊ธฐ (Level-2) - ํŒŒ์ด์ฌ

์š”๋Œœ๋‹ค 2023. 1. 19. 11:50

https://school.programmers.co.kr/learn/courses/30/lessons/12981

 

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

์ฝ”๋“œ ์ค‘์‹ฌ์˜ ๊ฐœ๋ฐœ์ž ์ฑ„์šฉ. ์Šคํƒ ๊ธฐ๋ฐ˜์˜ ํฌ์ง€์…˜ ๋งค์นญ. ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์˜ ๊ฐœ๋ฐœ์ž ๋งž์ถคํ˜• ํ”„๋กœํ•„์„ ๋“ฑ๋กํ•˜๊ณ , ๋‚˜์™€ ๊ธฐ์ˆ  ๊ถํ•ฉ์ด ์ž˜ ๋งž๋Š” ๊ธฐ์—…๋“ค์„ ๋งค์นญ ๋ฐ›์œผ์„ธ์š”.

programmers.co.kr

 

import math
def solution(n, words):
    answer = [0,0]
    stack = []
  
    for i in range(len(words)):
        if not len(stack): #์Šคํƒ์ด ๋น„์–ด์žˆ์œผ๋ฉด
            stack.append(words[i])
            continue
        if (stack[-1][-1] !=  words[i][0]) or words[i] in stack : #์ „ ๋‹จ์–ด์˜ ๋งˆ์ง€๋ง‰ ๊ธ€์ž์™€ ๋‹ค์Œ ๋‹จ์–ด์˜ ์ฒซ ๊ธ€์ž๊ฐ€ ๋‹ค๋ฅด๋ฉด ๋˜๋Š” ์ด๋ฏธ ๋งํ•œ ๋‹จ์–ด๋ฅผ ๋งํ–ˆ์„ ๊ฒฝ์šฐ
            return [i%n+1,math.ceil((i+1)/n)]
        else : #๊ฐ™์œผ๋ฉด 
            stack.append(words[i])
    #๋ฌธ์ œ์—†์ด ์„ฑ๊ณตํ–ˆ์„ ๊ฒฝ์šฐ๋Š” 0,0 ๋ฆฌํ„ด
    return [0,0]

๋ฌธ์ œ๋ฅผ ๋ณด์ž๋งˆ์ž ์Šคํƒ์„ ๋งŒ๋“ค์–ด์„œ ์Šคํƒ์˜ ๋งˆ์ง€๋ง‰ ์›์†Œ์˜ ๋งˆ์ง€๋ง‰ ๊ธ€์ž์™€ ๋‹จ์–ด์˜ ์ฒซ ๋ฒˆ์งธ ๊ธ€์ž๋ฅผ ๋น„๊ตํ•ด์ฃผ๋ฉด ๋˜๊ฒ ๋‹ค..๋ผ๊ณ  ์ƒ๊ฐํ•ด์„œ ํ’€์—ˆ๋‹ค. ์ •๋‹ต์ด๊ธด ํ•˜๋‚˜ 

def solution(n, words):
    for i in range(1, len(words)):
        if words[i][0] != words[i-1][-1]  or words[i] in words[:i] :
            return [(i%n)+1, (i//n)+1]
    else:
        return [0,0]

์ด๊ฒŒ ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค ํ’€์ด์ธ๋ฐ... ๋‚˜ ์™œ ๊ตณ์ด ์Šคํƒ์„ ๋งŒ๋“ค์–ด์คฌ์ง€? ๊ทธ๋ƒฅ word์ž์ฒด์—์„œ idx-1๊ณผ idx๋ฅผ ๋น„๊ตํ•ด์ฃผ๋ฉด ๋˜๋„ค 

์ฝ”๋“œ๋„ ์ง„์งœ ๊ฐ€๋…์„ฑ ์ข‹๊ณ  ํ›จ์”ฌ ๊ฐ„๋‹จํ•˜๋‹ค