[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ์Šคํ‚ฌํŠธ๋ฆฌ / ํŒŒ์ด์ฌ / python
Algorithm/Programmers

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] ์Šคํ‚ฌํŠธ๋ฆฌ / ํŒŒ์ด์ฌ / python

728x90
๋ฐ˜์‘ํ˜•

๐Ÿ’กsolutions )

โœ… ๊ณต๋ฐฑ์ด ์—†๋Š” ๋ฌธ์ž์—ด์„ ํ•˜๋‚˜์”ฉ ๋Š์–ด์„œ ๋ฆฌ์ŠคํŠธ ์š”์†Œ๋กœ ๋งŒ๋“ค ๋•Œ๋Š” list(str) ์‚ฌ์šฉํ•˜๊ธฐ str = "abc", list(str) = ["a", "b", "c"] (๋‹จ, ๊ณต๋ฐฑ ์žˆ์œผ๋ฉด split ์‚ฌ์šฉ)

โœ… skill์— ์žˆ๋Š” ๊ฒƒ๋“ค๋งŒ ๋ชจ์•„์„œ tmp์— ๋‹ด๊ณ  skill๋ฆฌ์ŠคํŠธ์™€ tmp๋ฆฌ์ŠคํŠธ ๊ฐ’ ๋น„๊ตํ•˜๊ธฐ 

โœ… ๊ธธ์ด๊ฐ€ ๊ฐ™์€ ๊ฒฝ์šฐ๋Š” ๋ฐ”๋กœ cnt + 1, ๋‹ค๋ฅธ ๊ฒฝ์šฐ์—๋Š” ์ฒซ ๋ฒˆ์งธ๋ถ€ํ„ฐ ๊ฐ’์„ ๋น„๊ตํ•˜๊ธฐ -> ๋ฌธ์ œ ํ‘ผ ํ›„์— skill ๋ฆฌ์ŠคํŠธ์˜ pop(0)๊ฐ’ ํ•˜๊ณ ๋งŒ ๋น„๊ตํ•˜๋ฉด ๋œ๋‹ค๋Š” ๊ฑธ ์•Œ์•˜๋‹ค. (๋งจ ์•ž์„ ์„ ํ–‰ํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฑด, ๊ฒฐ๊ตญ ๊ฐ€๋Šฅํ•œ ์Šคํ‚ฌํŠธ๋ฆฌ๊ฐ€ ์•„๋‹ˆ๊ธฐ ๋•Œ๋ฌธ)

 

๐ŸŽซcode )

def solution(skill, skill_trees):
    skill = list(skill)
    cnt = 0
    for st in skill_trees:
        st = list(st)
        tmp = []
        for i in st:
            if i in skill:
                tmp.append(i)
        if len(tmp) == len(skill):
            if tmp == skill:
                cnt += 1
        else:
            for i in range(len(tmp)):
                if skill[i] != tmp[i]:
                    break
            else:
                cnt += 1
    return cnt

 

๐Ÿ“Œ description )

๋ฌธ์ œ ์ถœ์ฒ˜ https://programmers.co.kr/learn/courses/30/lessons/49993

 

์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต - ์Šคํ‚ฌํŠธ๋ฆฌ

 

programmers.co.kr

 

 

์Šคํ‚ฌํŠธ๋ฆฌ

๋ฌธ์ œ ์„ค๋ช…

์„ ํ–‰ ์Šคํ‚ฌ์ด๋ž€ ์–ด๋–ค ์Šคํ‚ฌ์„ ๋ฐฐ์šฐ๊ธฐ ์ „์— ๋จผ์ € ๋ฐฐ์›Œ์•ผ ํ•˜๋Š” ์Šคํ‚ฌ์„ ๋œปํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด ์„ ํ–‰ ์Šคํ‚ฌ ์ˆœ์„œ๊ฐ€ ์ŠคํŒŒํฌ → ๋ผ์ดํŠธ๋‹ ๋ณผํŠธ → ์ฌ๋”์ผ๋•Œ, ์ฌ๋”๋ฅผ ๋ฐฐ์šฐ๋ ค๋ฉด ๋จผ์ € ๋ผ์ดํŠธ๋‹ ๋ณผํŠธ๋ฅผ ๋ฐฐ์›Œ์•ผ ํ•˜๊ณ , ๋ผ์ดํŠธ๋‹ ๋ณผํŠธ๋ฅผ ๋ฐฐ์šฐ๋ ค๋ฉด ๋จผ์ € ์ŠคํŒŒํฌ๋ฅผ ๋ฐฐ์›Œ์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์œ„ ์ˆœ์„œ์— ์—†๋Š” ๋‹ค๋ฅธ ์Šคํ‚ฌ(ํž๋ง ๋“ฑ)์€ ์ˆœ์„œ์— ์ƒ๊ด€์—†์ด ๋ฐฐ์šธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ŠคํŒŒํฌ → ํž๋ง → ๋ผ์ดํŠธ๋‹ ๋ณผํŠธ → ์ฌ๋”์™€ ๊ฐ™์€ ์Šคํ‚ฌํŠธ๋ฆฌ๋Š” ๊ฐ€๋Šฅํ•˜์ง€๋งŒ, ์ฌ๋” → ์ŠคํŒŒํฌ๋‚˜ ๋ผ์ดํŠธ๋‹ ๋ณผํŠธ → ์ŠคํŒŒํฌ → ํž๋ง → ์ฌ๋”์™€ ๊ฐ™์€ ์Šคํ‚ฌํŠธ๋ฆฌ๋Š” ๋ถˆ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

์„ ํ–‰ ์Šคํ‚ฌ ์ˆœ์„œ skill๊ณผ ์œ ์ €๋“ค์ด ๋งŒ๋“  ์Šคํ‚ฌํŠธ๋ฆฌ1๋ฅผ ๋‹ด์€ ๋ฐฐ์—ด skill_trees๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์งˆ ๋•Œ, ๊ฐ€๋Šฅํ•œ ์Šคํ‚ฌํŠธ๋ฆฌ ๊ฐœ์ˆ˜๋ฅผ return ํ•˜๋Š” solution ํ•จ์ˆ˜๋ฅผ ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”.

์ œํ•œ ์กฐ๊ฑด

  • ์Šคํ‚ฌ์€ ์•ŒํŒŒ๋ฒณ ๋Œ€๋ฌธ์ž๋กœ ํ‘œ๊ธฐํ•˜๋ฉฐ, ๋ชจ๋“  ๋ฌธ์ž์—ด์€ ์•ŒํŒŒ๋ฒณ ๋Œ€๋ฌธ์ž๋กœ๋งŒ ์ด๋ฃจ์–ด์ ธ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์Šคํ‚ฌ ์ˆœ์„œ์™€ ์Šคํ‚ฌํŠธ๋ฆฌ๋Š” ๋ฌธ์ž์—ด๋กœ ํ‘œ๊ธฐํ•ฉ๋‹ˆ๋‹ค.

    • ์˜ˆ๋ฅผ ๋“ค์–ด, C → B → D ๋ผ๋ฉด CBD๋กœ ํ‘œ๊ธฐํ•ฉ๋‹ˆ๋‹ค

  • ์„ ํ–‰ ์Šคํ‚ฌ ์ˆœ์„œ skill์˜ ๊ธธ์ด๋Š” 1 ์ด์ƒ 26 ์ดํ•˜์ด๋ฉฐ, ์Šคํ‚ฌ์€ ์ค‘๋ณตํ•ด ์ฃผ์–ด์ง€์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

  • skill_trees๋Š” ๊ธธ์ด 1 ์ด์ƒ 20 ์ดํ•˜์ธ ๋ฐฐ์—ด์ž…๋‹ˆ๋‹ค.

  • skill_trees์˜ ์›์†Œ๋Š” ์Šคํ‚ฌ์„ ๋‚˜ํƒ€๋‚ด๋Š” ๋ฌธ์ž์—ด์ž…๋‹ˆ๋‹ค.

    • skill_trees์˜ ์›์†Œ๋Š” ๊ธธ์ด๊ฐ€ 2 ์ด์ƒ 26 ์ดํ•˜์ธ ๋ฌธ์ž์—ด์ด๋ฉฐ, ์Šคํ‚ฌ์ด ์ค‘๋ณตํ•ด ์ฃผ์–ด์ง€์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์ž…์ถœ๋ ฅ ์˜ˆ

skillskill_treesreturn

"CBD"

["BACDE", "CBADF", "AECB", "BDA"]

2

์ž…์ถœ๋ ฅ ์˜ˆ ์„ค๋ช…

  • BACDE: B ์Šคํ‚ฌ์„ ๋ฐฐ์šฐ๊ธฐ ์ „์— C ์Šคํ‚ฌ์„ ๋จผ์ € ๋ฐฐ์›Œ์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋ถˆ๊ฐ€๋Šฅํ•œ ์Šคํ‚ฌํŠธ๋ฆฝ๋‹ˆ๋‹ค.

  • CBADF: ๊ฐ€๋Šฅํ•œ ์Šคํ‚ฌํŠธ๋ฆฌ์ž…๋‹ˆ๋‹ค.

  • AECB: ๊ฐ€๋Šฅํ•œ ์Šคํ‚ฌํŠธ๋ฆฌ์ž…๋‹ˆ๋‹ค.

  • BDA: B ์Šคํ‚ฌ์„ ๋ฐฐ์šฐ๊ธฐ ์ „์— C ์Šคํ‚ฌ์„ ๋จผ์ € ๋ฐฐ์›Œ์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋ถˆ๊ฐ€๋Šฅํ•œ ์Šคํ‚ฌํŠธ๋ฆฌ์ž…๋‹ˆ๋‹ค.

๋ฐ˜์‘ํ˜•