๐ŸŒžAlgorithm/๐Ÿ”ฅprogrammers

[programmers] ์Šคํ‚ฌํŠธ๋ฆฌ - Summer/Winter Coding(~2018)

๋ฟŒ์•ผ._. 2021. 1. 11. 20:27

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


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

๋ฌธ์ œ ์„ค๋ช…

 

์„ ํ–‰ ์Šคํ‚ฌ์ด๋ž€ ์–ด๋–ค ์Šคํ‚ฌ์„ ๋ฐฐ์šฐ๊ธฐ ์ „์— ๋จผ์ € ๋ฐฐ์›Œ์•ผ ํ•˜๋Š” ์Šคํ‚ฌ์„ ๋œปํ•ฉ๋‹ˆ๋‹ค.
์˜ˆ๋ฅผ ๋“ค์–ด ์„ ํ–‰ ์Šคํ‚ฌ ์ˆœ์„œ๊ฐ€ ์ŠคํŒŒํฌ → ๋ผ์ดํŠธ๋‹ ๋ณผํŠธ → ์ฌ๋”์ผ ๋•Œ, ์ฌ๋”๋ฅผ ๋ฐฐ์šฐ๋ ค๋ฉด ๋จผ์ € ๋ผ์ดํŠธ๋‹ ๋ณผํŠธ๋ฅผ ๋ฐฐ์›Œ์•ผ ํ•˜๊ณ , ๋ผ์ดํŠธ๋‹ ๋ณผํŠธ๋ฅผ ๋ฐฐ์šฐ๋ ค๋ฉด ๋จผ์ € ์ŠคํŒŒํฌ๋ฅผ ๋ฐฐ์›Œ์•ผ ํ•ฉ๋‹ˆ๋‹ค.
์œ„ ์ˆœ์„œ์— ์—†๋Š” ๋‹ค๋ฅธ ์Šคํ‚ฌ(ํž๋ง ๋“ฑ)์€ ์ˆœ์„œ์— ์ƒ๊ด€์—†์ด ๋ฐฐ์šธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์ŠคํŒŒํฌ → ํž๋ง → ๋ผ์ดํŠธ๋‹ ๋ณผํŠธ → ์ฌ๋”์™€ ๊ฐ™์€ ์Šคํ‚ฌ ํŠธ๋ฆฌ๋Š” ๊ฐ€๋Šฅํ•˜์ง€๋งŒ, ์ฌ๋” → ์ŠคํŒŒํฌ๋‚˜ ๋ผ์ดํŠธ๋‹ ๋ณผํŠธ → ์ŠคํŒŒํฌ → ํž๋ง → ์ฌ๋”์™€ ๊ฐ™์€ ์Šคํ‚ฌํŠธ๋ฆฌ๋Š” ๋ถˆ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
์„ ํ–‰ ์Šคํ‚ฌ ์ˆœ์„œ skill๊ณผ ์œ ์ €๋“ค์ด ๋งŒ๋“  ์Šคํ‚ฌํŠธ๋ฆฌ1๋ฅผ ๋‹ด์€ ๋ฐฐ์—ด skill_trees๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์งˆ ๋•Œ, ๊ฐ€๋Šฅํ•œ ์Šคํ‚ฌ ํŠธ๋ฆฌ ๊ฐœ์ˆ˜๋ฅผ return ํ•˜๋Š” solution ํ•จ์ˆ˜๋ฅผ ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”.

 

 

์ œํ•œ ์กฐ๊ฑด

 

- ์Šคํ‚ฌ์€ ์•ŒํŒŒ๋ฒณ ๋Œ€๋ฌธ์ž๋กœ ํ‘œ๊ธฐํ•˜๋ฉฐ, ๋ชจ๋“  ๋ฌธ์ž์—ด์€ ์•ŒํŒŒ๋ฒณ ๋Œ€๋ฌธ์ž๋กœ๋งŒ ์ด๋ฃจ์–ด์ ธ ์žˆ์Šต๋‹ˆ๋‹ค.
- ์Šคํ‚ฌ ์ˆœ์„œ์™€ ์Šคํ‚ฌํŠธ๋ฆฌ๋Š” ๋ฌธ์ž์—ด๋กœ ํ‘œ๊ธฐํ•ฉ๋‹ˆ๋‹ค.
  - ์˜ˆ๋ฅผ ๋“ค์–ด, C → B → D ๋ผ๋ฉด CBD๋กœ ํ‘œ๊ธฐํ•ฉ๋‹ˆ๋‹ค.
-์„ ํ–‰ ์Šคํ‚ฌ ์ˆœ์„œ skill์˜ ๊ธธ์ด๋Š” 1 ์ด์ƒ 26 ์ดํ•˜์ด๋ฉฐ, ์Šคํ‚ฌ์€ ์ค‘๋ณตํ•ด ์ฃผ์–ด์ง€์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
- skill_trees๋Š” ๊ธธ์ด 1 ์ด์ƒ 20 ์ดํ•˜์ธ ๋ฐฐ์—ด์ž…๋‹ˆ๋‹ค.
- skill_trees์˜ ์›์†Œ๋Š” ์Šคํ‚ฌ์„ ๋‚˜ํƒ€๋‚ด๋Š” ๋ฌธ์ž์—ด์ž…๋‹ˆ๋‹ค.
   - skill_trees์˜ ์›์†Œ๋Š” ๊ธธ์ด๊ฐ€ 2 ์ด์ƒ 26 ์ดํ•˜์ธ ๋ฌธ์ž์—ด์ด๋ฉฐ, ์Šคํ‚ฌ์ด ์ค‘๋ณตํ•ด ์ฃผ์–ด์ง€์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

 

๋ฌธ์ œ ํ’€์ด

  - my solution

def solution(skill, skill_trees):
    answer = 0
    
    for i in skill_trees: 
        count=0
        temp=[]
        for j in range(len(i)): #๊ฐ’ ํ•˜๋‚˜์”ฉ ์ฝ์–ด์„œ
            for k in range(len(skill)): 
                if(skill[k]==i[j]): #skill์— ์žˆ๋Š” ๊ธ€์ž๊ฐ€ i์— ๋“ค์–ด์žˆ๋‹ค๋ฉด
                    temp.append(skill[k]) #list์— ์ถ”๊ฐ€
        if(len(temp)==0): #list ๊ธธ์ด๊ฐ€ 0์ด๋ฉด -> skill์— ์ƒ๊ด€์—†์Œ
            answer+=1
        for j in range(len(temp)): 
            if(skill[j]==temp[j]): #list์™€ skill์„ ๋น„๊ต
                count+=1
            if(count==len(temp)): #list๊ธธ์ด์™€ ๊ฐ™๋‹ค๋ฉด ์„ ํ–‰ ์Šคํ‚ฌ ์ˆœ์„œ skill์— ๋งž๋‹ค๋Š” ์˜๋ฏธ
                answer+=1

    return answer

 1) skill_trees์— ์žˆ๋Š” ๊ฐ’ ์ˆœํšŒ

    1-1) ๊ฐ’์„ ํ•˜๋‚˜์”ฉ ์ฝ์–ด์„œ skill์— ์žˆ๋Š” ๊ธ€์ž๊ฐ€ ์žˆ๋‹ค๋ฉด list์— ์ถ”๊ฐ€

    1-2) list์˜ ๊ธธ์ด๊ฐ€ 0์ด๋ฉด skill๊ณผ ์ƒ๊ด€์—†์œผ๋ฏ€๋กœ answer+1

    1-3) list ์ˆœํšŒ -> list์™€ skill์„ ๋น„๊ตํ•ด์„œ list์˜ ๊ธธ์ด์™€ count๊ฐ€ ๊ฐ™๋‹ค๋ฉด ์„ ํ–‰ ์Šคํ‚ฌ ์ˆœ์„œ skill์— ๋งž๋‹ค๋Š” ์˜๋ฏธ

                          answer+1


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