ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Programmers] ์™ธ๋ฒฝ ์ ๊ฒ€ with Python
    PS 2021. 12. 6. 21:43
    728x90
    ๋ฐ˜์‘ํ˜•

    ๐Ÿ“Œ Programmers - [์™ธ๋ฒฝ ์ ๊ฒ€]

    ๐Ÿ’ก ์กฐ๊ฑด

    1. ์™ธ๋ฒฝ์˜ ์ด ๋‘˜๋ ˆ๊ธธ์ด (1 <= n <= 200)
      ์ทจ์•ฝ ์ง€์ ์˜ ์œ„์น˜๊ฐ€ ๋‹ด๊ธด ๋ฐฐ์—ด (1< = weak <= 15)

      • ์„œ๋กœ ๋‹ค๋ฅธ ๋‘ ์ทจ์•ฝ์ ์˜ ์œ„์น˜๊ฐ€ ๊ฐ™์„ ๊ฒฝ์šฐ๋Š” ์—†๋‹ค.
      • ์ทจ์•ฝ์ง€์ ์˜ ์œ„์น˜๋Š” ์˜ค๋ฆ„์ฐจ์ˆœ์ด๋‹ค.
      • (0 <= weak์˜ ์›์†Œ <= n-1)
    2. ์นœ๊ตฌ๊ฐ€ 1์‹œ๊ฐ„ ๋™์•ˆ ์ด๋™ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฑฐ๋ฆฌ (1<= dist <= 8)

    3. ์นœ๊ตฌ๋“ค์„ ์ตœ์†Œํ•œ์œผ๋กœ ํˆฌ์ž…์‹œ์ผœ์„œ ์™ธ๋ฒฝ ์ ๊ฒ€์„ ํ•ด์•ผํ•œ๋‹ค.
      ๋งŒ์•ฝ ์นœ๊ตฌ๋“ค์ด ๋ชจ๋‘ ํˆฌ์ž…๋˜์–ด๋„ ์™ธ๋ฒฝ์„ ๋ชจ๋‘ ์ ๊ฒ€ํ•  ์ˆ˜ ์—†๋‹ค๋ฉด, -1์„ ์ถœ๋ ฅ.

    4. ์ˆœ์—ด, ๋ธŒ๋ฃจํŠธํฌ์Šค ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์œ ํ˜•์˜ ๋ฌธ์ œ

    ๐Ÿ–ฅ ์†Œ์Šค ์ฝ”๋“œ

    from itertools import permutations
    
    
    def solution(n, weak, dist):
        leng = len(weak)
        for x in range(leng):
            weak.append(weak[x] + n)
    
        answer = len(dist) + 1
    
        for start in range(leng):
            for friends in list(permutations(dist, len(dist))):
                count = 0
                position = weak[start] - friends[count - 1]
    
                for index in range(start, start + leng):
                    if position < weak[index]:
                        count += 1
                        if count > len(dist):
                            break
                        position = weak[index] + friends[count - 1]
                answer = min(answer, count)
        if answer > len(dist):
            return -1
    
        return answer

    ๐Ÿ”– ์˜ˆ์ œ ๋ฐ ์‹คํ–‰๊ฒฐ๊ณผ

    ์˜ˆ์ œ

    print(solution(12, [1, 5, 6, 10], [1, 2, 3, 4], 2))

    ์‹คํ–‰๊ฒฐ๊ณผ

    2

    โŒจ๏ธ ๋ฌธ์ œ ํ’€์ด

    1. ์ ๊ฒ€ ํ•ด์•ผํ•  ์™ธ๋ฒฝ์˜ ๊ธธ์ด๋ฅผ ๊ตฌํ•˜๊ธฐ ์œ„ํ•ด weak์˜ ๊ธธ์ด๋ฅผ leng ์ด๋ผ๋Š” ๋ณ€์ˆ˜์— ๋‹ด์•„์ค€๋‹ค.

    2. ์ด n ๋งŒํผ์˜ ์™ธ๋ฒฝ์ด ์žˆ์œผ๋‹ˆ, weak ์˜ ๊ธธ์ด๋งŒํผ ์ˆœํšŒํ•˜๋ฉด์„œ weak ์˜ ์›์†Œ์— n์„ ๋”ํ•˜์—ฌ
      ์›ํ˜• ๋ชจ์–‘์˜ ์™ธ๋ฒฝ์„ ํŽผ์ณ์ค€๋‹ค๊ณ  ์ƒ๊ฐํ•˜์ž.

    3. answer์˜ ๊ฐ’์€ ์ ๊ฒ€์„ ํˆฌ์ž…ํ•  ์ˆ˜ ์žˆ๋Š” ์นœ๊ตฌ๋“ค์˜ ์ˆ˜(dist์˜ ๊ธธ์ด)๋ณด๋‹ค 1 ๋งŽ๊ฒŒ ์ €์žฅํ•œ๋‹ค.
      ์ด ๊ณผ์ •์ด ์žˆ์–ด์•ผ ๋ชจ๋‘ ํˆฌ์ž…์‹œ์ผœ๋„ ์•ˆ๋  ๋•Œ -1์„ ์ถœ๋ ฅํ•˜๊ฒŒ ํ•  ์ˆ˜ ์žˆ๋‹ค.

    4. ์ทจ์•ฝ์  ์–ด๋””์„œ๋ถ€ํ„ฐ ์‹œ์ž‘ํ• ์ง€์— ๋”ฐ๋ผ์„œ ์ธ์›์˜ ์ˆ˜๊ฐ€ ์ ์–ด์งˆ ์ˆ˜๋„, ๋งŽ์•„์งˆ ์ˆ˜๋„ ์žˆ๋‹ค.
      ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— start(์ถœ๋ฐœ์ง€์ ) ์„ weak์˜ ๊ธธ์ด๋งŒํผ ์ˆœํšŒ์‹œ์ผœ ๋Œ๊ฒŒํ•˜๊ณ ,

      ์นœ๊ตฌ๋“ค์ด ํˆฌ์ž…๋  ์ˆœ์„œ๋Š” permutations ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด ๋ณ€๊ฒฝํ•œ๋‹ค.

    1. count = 0์œผ๋กœ ์ดˆ๊ธฐํ™” ํ•œ ๋’ค, position์„ ์ •ํ•œ๋‹ค.
      ์ทจ์•ฝ์  ๋ฐฐ์—ด์—์„œ start ๋ฒˆ์งธ์—์„œ
      ์นœ๊ตฌ๋“ค์˜ 1์‹œ๊ฐ„๋™์•ˆ ์ด๋™๊ฑฐ๋ฆฌ๋ฅผ permutations๋กœ ๋ฝ‘์•„๋‚ธ ๋ฐฐ์—ด์˜ count - 1 ๋ฒˆ์งธ์˜ ๊ฐ’์„
      ๋นผ์ค€ ๊ฒƒ์ด position ๊ฐ’์ด๋‹ค.

    2. ๊ทธ๋ ‡๋‹ค๋ฉด, ์ทจ์•ฝ์  ์‹œ์ž‘๋ถ€๋ถ„(start) ๋ถ€ํ„ฐ ์ทจ์•ฝ์  ์‹œ์ž‘๋ถ€๋ถ„(start) + ์ทจ์•ฝ์ ์˜ ๊ฐœ์ˆ˜(leng)๊นŒ์ง€ ์ˆœํšŒํ•˜๋ฉด์„œ(index)
      ํ˜„์žฌ ํฌ์ง€์…˜ ๊ฐ’์ด ์ทจ์•ฝ์ ๋ฐฐ์—ด์˜ index์— ํ•ด๋‹นํ•˜๋Š” ๊ฐ’๋ณด๋‹ค ์ž‘๋‹ค๋ฉด count += 1 ์„ ํ•ด์ค€๋‹ค.
      count ๊ฐ€ ํ˜น์‹œ ์นœ๊ตฌ์˜ ์ˆ˜๋ฅผ ๋„˜์—ˆ๋‹ค๋ฉด ๋ฐ”๋กœ ์ค‘๋‹จํ•œ๋‹ค.
      ๊ทธ๊ฒŒ ์•„๋‹ˆ๋ผ๋ฉด ์ž‘์—…์„ ํ•œ ํ›„, position์„ ๊ฐฑ์‹ ํ•œ๋‹ค.

    3. answer ์™€ count ์ค‘์— ๊ฐ€์žฅ ์ž‘์€ ๊ฒƒ์„ answer์— ๋‹ด์•„ ๊ฐฑ์‹ ํ•œ ๋’ค, answer๊ฐ€ dist์˜ ๊ธธ์ด๋ณด๋‹ค ํฌ๋‹ค๋ฉด -1์„ ๋ฐ˜ํ™˜ํ•˜๊ณ 
      ๊ทธ๊ฒŒ ์•„๋‹ˆ๋ผ๋ฉด answer๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

    ๐Ÿ’พ ๋Š๋‚€์ 

    1. ์™ธ๋ฒฝ์„ ํ‰๋ฉด์œผ๋กœ ํŽผ์น  ์•„์ด๋””์–ด๋ฅผ ๋– ์˜ฌ๋ฆฌ์ง€ ๋ชปํ•˜๊ณ  ํ•ด์„ค์„ ๋ณธ ํ›„ ํฐ ์ถฉ๊ฒฉ์„ ๋ฐ›์•˜๋‹ค.
    2. ์ดํ›„, ์™ธ๋ฒฝ ์ ์ ์„ ํ•ด์•ผํ•  ์ทจ์•ฝ์  ์ค‘ ํ•œ ๋ถ€๋ถ„์„ ๊ณจ๋ผ ์ทจ์•ฝ์ ์˜ ๊ธธ์ด๋งŒํผ ์ ๊ฒ€ํ•˜๋Š” ๋กœ์ง์„ ๊ตฌํ˜„ํ•˜๋Š”๋ฐ์—
      ๋งŽ์€ ๋…ธ๋ ฅ๊ณผ ๊ธด ์‹œ๊ฐ„์ด ํ•„์š”ํ–ˆ๋‹ค.
    3. ์Šค์Šค๋กœ ๊ตฌํ˜„์ด ์•ฝํ•˜๋‹ค๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ๋‹ค. ์กฐ๊ธˆ ๋” ๊ตฌํ˜„ํ•  ๋•Œ ๊ทธ๋ฆผ์„ ๊ทธ๋ฆฌ๊ธ‹ ์„ค๊ณ„ํ•˜๊ณ , ์งง์•„๋„ ๊ตฌํ˜„๊ณ„ํš์„ ์จ๋‚ด๋ ค๊ฐ€์•ผ๊ฒ ๋‹ค.
    4. ์Šค์Šค๋กœ ๊ฒ€์ฆํ•˜๋Š” ๋ถ€๋ถ„์—์„œ ํฐ ์•ฝ์ ์ด ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ๋Š๊ผˆ๋‹ค.
    ๋ฐ˜์‘ํ˜•

    ๋Œ“๊ธ€

Designed by Tistory.