๐Ÿ“Œ ํŒŒ์ด์ฌ ์œผ๋กœ ํ’€์ด

 

๐Ÿ“Œ ๋ฌธ์ œ ๋งํฌ :

 

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

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

programmers.co.kr

 

๐Ÿ“Œ ๋ฌธ์ œ ์„ค๋ช… :

ํšจ์ง„์ด๋Š” ๋ฉ€๋ฆฌ ๋›ฐ๊ธฐ๋ฅผ ์—ฐ์Šตํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ํšจ์ง„์ด๋Š” ํ•œ๋ฒˆ์— 1์นธ, ๋˜๋Š” 2์นธ์„ ๋›ธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์นธ์ด ์ด 4๊ฐœ ์žˆ์„ ๋•Œ, ํšจ์ง„์ด๋Š”
(1์นธ, 1์นธ, 1์นธ, 1์นธ)
(1์นธ, 2์นธ, 1์นธ)
(1์นธ, 1์นธ, 2์นธ)
(2์นธ, 1์นธ, 1์นธ)
(2์นธ, 2์นธ)
์˜ 5๊ฐ€์ง€ ๋ฐฉ๋ฒ•์œผ๋กœ ๋งจ ๋ ์นธ์— ๋„๋‹ฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฉ€๋ฆฌ๋›ฐ๊ธฐ์— ์‚ฌ์šฉ๋  ์นธ์˜ ์ˆ˜ n์ด ์ฃผ์–ด์งˆ ๋•Œ, ํšจ์ง„์ด๊ฐ€ ๋์— ๋„๋‹ฌํ•˜๋Š” ๋ฐฉ๋ฒ•์ด ๋ช‡ ๊ฐ€์ง€์ธ์ง€ ์•Œ์•„๋‚ด, ์—ฌ๊ธฐ์— 1234567๋ฅผ ๋‚˜๋ˆˆ ๋‚˜๋จธ์ง€๋ฅผ ๋ฆฌํ„ดํ•˜๋Š” ํ•จ์ˆ˜, solution์„ ์™„์„ฑํ•˜์„ธ์š”. ์˜ˆ๋ฅผ ๋“ค์–ด 4๊ฐ€ ์ž…๋ ฅ๋œ๋‹ค๋ฉด, 5๋ฅผ returnํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

 

๐Ÿ“Œ ์ œํ•œ ์‚ฌํ•ญ

  • n์€ 1 ์ด์ƒ, 2000 ์ดํ•˜์ธ ์ •์ˆ˜์ž…๋‹ˆ๋‹ค.

 

๐Ÿ“Œ ์ž…์ถœ๋ ฅ ์˜ˆ


์ถ”์ธก) 

n์˜ ๊ฐœ์ˆ˜๋ฅผ ์ผ๋‹จ 2๋กœ ๋‚˜๋ˆˆ ๋ชซ์„ ๊ตฌํ•œ๋‹ค .

๋ชซ์ด 0์ด๋ฉด n๋Š” 1๋ฐ–์— ์—†์œผ๋ฏ€๋กœ cnt์— 1์„ ๋„ฃ์–ด ๋ฐ˜ํ™˜

๋ชซ์ด 0์ด ์•„๋‹ˆ๋ฉด ๋ชซ์˜ ๊ธธ์ด ๋งŒํผ for๋ฌธ์„ ๋Œ๋ฆฐ๋‹ค. 

for๋ฌธ์˜ i๋ฅผ 2์นธ์˜ ๊ฐœ์ˆ˜๋กœ ๋ณด๊ณ  n์—์„œ 2*i๋ฅผ ๋บ€๊ฑธ 1์นธ์˜ ๊ฐœ์ˆ˜๋กœ ๋ณธ๋‹ค.

๊ทธ๋ฆฌ๊ณ  ๊ทธ ํ„ด์—์„œ์˜ 2์นธ์˜ ๊ฐœ์ˆ˜์™€ 1์นธ์˜ ๊ฐœ์ˆ˜๋กœ ์ค‘๋ณต์žˆ๋Š” ์ˆœ์—ด์˜ ๊ฒฝ์šฐ ์ˆ˜๋ฅผ ๊ตฌํ•ด ์ตœ์ข… ๊ฐ’์— +๋Œ€์ž…ํ•œ๋‹ค. 

๋ชจ๋“  for๋ฌธ์„ ๋Œ๋ฉด์„œ ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ๋ˆ„์ ํ•˜๊ณ  ๋งˆ์ง€๋ง‰์œผ๋กœ ๋ฆฌํ„ดํ•œ๋‹ค. 

 

์†Œ์Šค์ฝ”๋“œ) 

* 1์ฐจ) ์‹คํŒจ : ์ •ํ™•๋„ 37.5์ 

def solution(n):
    answer = 0
    num = int(n/2)

    if num == 0 :
        return 1

    for i in range(0, num + 1):
        two_num = i
        one_num = n-(2*i)

        if two_num == 0 or one_num == 0 :
            answer += 1
            continue

        top_num = factorial(two_num+one_num, 1)
        b_case = factorial(two_num, 1)
        c_case = factorial(one_num, 1)

        case_num = int(top_num / (b_case * c_case))
        answer += case_num

    return answer % 1234567

def factorial(num, result):
    if num == 0 :
        return result

    result *= num
    num -= 1
    return factorial(num, result)

* 2์ฐจ) ์„ฑ๊ณต : ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์ด DP๋ฐฉ์‹ ์ ์šฉํ–ˆ๋‹ค๋Š” ๊ฑฐ ์•Œ๊ณ  ๊ณต๋ถ€ ํ›„ ์ ์šฉ

def solution(n):
    n_list = [0] * n

    for i in range(n):
        if i == 0 :
            n_list[i] = 1
        elif i == 1 :
            n_list[i] = 2
        else:
            n_list[i] = n_list[i-1] + n_list[i-2]

    return n_list[n-1] % 1234567

 

 

๋ฆฌ๋ทฐ) 

 

1์ฐจ)

์ฐพ์•„๋„ ์–ด๋ ค์šด ๊ธธ๋กœ ์ฐพ์•„๊ฐ€๊ณ  ์žˆ์—ˆ๊ตฌ๋‚˜ ์‹ถ๋‹ค ๋‚˜๋„ ์ฐธ.. ์ˆœ์—ด๋กœ ํ’€๋ผ๊ณ  ํ–ˆ๋Š”๋ฐ

๋‚˜๋ฆ„ ํšŒ์‹ฌ์˜ ์žฌ๊ท€ํ•จ์ˆ˜๋กœ ํŒฉํ† ๋ฆฌ์–ผ ๊ตฌํ˜„๊นŒ์ง€ ํ–ˆ๋Š”๋ฐ ๐Ÿคฃ

 

๋”์ด์ƒ ํ•ด๊ฒฐ์ด ์•ˆ๋˜์„œ ์งˆ๋ฌธํ•˜๊ธฐ ๊ธ€๋“ค์„ ๋ดค๋‹ค

๊ทธ ์ค‘ ๋˜‘๊ฐ™์ด ์ˆœ์—ด๋กœ ํ’€์–ด๋ณธ ์‚ฌ๋žŒ์ด ํ…Œ์ŠคํŠธ ์˜ˆ์‹œ๋กœ 2000์„ ๋„ฃ์–ด๋ณด๋ผ๋Š” ๊ธ€์ด ์žˆ์—ˆ๋‹ค.

์•„... ์ด๋Ÿฐ ใ…‹ใ…‹ใ…‹์˜ค๋ฒ„ํ”Œ๋กœ์šฐ!

์ด๋Ÿฐ ์˜ค๋ฅ˜๊ฐ€ ๋‚  ์ˆ˜ ์žˆ๋Š” ์ƒํ™ฉ๋„ ์ƒ๊ฐํ–ˆ์–ด์•ผ์ง€!  

 

๊ทธ๋Ÿผ ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค์€ ์ด ๋ฌธ์ œ๋ฅผ ์–ด๋–ป๊ฒŒ ์ ‘๊ทผํ–ˆ์„ ๊นŒํ•˜๊ณ  ๋ณด๋‹ˆ DP๋กœ ํ‘ธ๋Š” ๊ฑธ ๋ณด๊ฒŒ ๋ฌ๋‹ค.

์ผ๋‹จ ์™œ ์ด๊ฒŒ DP์ผ๊นŒ? ์‹ถ์–ด์„œ ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ์ฐจ๋ก€์ฐจ๋ก€ ๋”ฐ์ ธ๋ดค๋‹ค. 

n ๊ฒฝ์šฐ์˜  ์ˆ˜    
1 (1์นธ) 1  
2 (1์นธ,1์นธ), (2์นธ) 2  
3 (1์นธ,1์นธ,1์นธ), (2์นธ, 1์นธ), (1์นธ, 2์นธ) 3 1+2
4 (1์นธ,1์นธ,1์นธ,1์นธ),(2์นธ,1์นธ,1์นธ), (1์นธ, 2์นธ, 1์นธ), (2์นธ,1์นธ,1์นธ), (2์นธ, 2์นธ) 5 2+3
5 (1์นธ,1์นธ,1์นธ,1์นธ,1์นธ),(2์นธ,1์นธ,1์นธ,1์นธ), (1์นธ,2์นธ,1์นธ,1์นธ),(1์นธ,1์นธ,2์นธ,1์นธ),(1์นธ,1์นธ,1์นธ,2์นธ), (2์นธ, 2์นธ,1์นธ),(2์นธ,1์นธ,2์นธ), (1์นธ,2์นธ,2์นธ) 8 3+5
      ํ”ผ๋ณด๋‚˜์น˜ ์ˆ˜์—ด ํ˜•ํƒœ๋กœ ๋‚˜์˜จ๋‹ค

์•„, ํ”ผ๋ณด๋‚˜์น˜! 

 

๊ทธ๋ž˜์„œ ๋ฐ”๋กœ ์ ์šฉ!

์ผ๋‹จ ์•ž์˜ ์ˆ˜๋“ค์„ ๋‹ค ๋ฏธ๋ฆฌ ์ €์žฅํ•ด ๋‘๋ ค๋ฉด n๊ฐœ ๋งŒํผ 0์ด ๋“  ๋ฐฐ์—ด์„ ๋งŒ๋“ ๋‹ค.

n_list = [0] * n

n ๋งŒํผ for๋ฌธ์„ ๋Œ๋ฆด๊ฑด๋ฐ n์ด 1๊ณผ 2์ผ ๋•Œ๋Š” ์•ž์— 2๊ฐœ์˜ ์ˆ˜๊ฐ€ ์—†์œผ๋ฏ€๋กœ ๊ทธ๋ƒฅ ๊ฐ๊ฐ 1๊ณผ 2์„ ์ธ๋ฑ์Šค์— ๋Œ€์ž…ํ•œ๋‹ค. 

3 ์ด์ƒ ๋ถ€ํ„ฐ๋Š” ๊ทธ ์ธ๋ฑ์Šค์˜ ์ „ ๊ฐ’๊ณผ ๋ฐ”๋กœ ์ „์ „ ๊ฐ’์„ ๋”ํ•ด ๋Œ€์ž…ํ•œ๋‹ค. 

n ๋งŒํผ for๋ฌธ์„ ๋Œ์•„ ๋ฐฐ์—ด์„ ์™„์„ฑํ•˜๋ฉด n-1์˜ ์ธ๋ฑ์Šค ๊ฐ’์„ ๊ฐ€์ ธ์™€ ๋ฆฌํ„ดํ•œ๋‹ค. 

 

๊ทธ๋Ÿฌ๋ฉด ์ตœ์ข…์ ์œผ๋กœ ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ๊ตฌํ•˜๊ฒŒ ๋œ๋‹ค! 

 

ํœด ์•„์ง๋„ ๊ฒฝํ—˜์น˜๊ฐ€ ๋งŽ์ด ๋ถ€์กฑํ•˜๋‹ค. ๋ฌธ์ œ ํŒŒ์•…์„ ๋น ๋ฅด๊ณ  ์ •ํ™•ํ•˜๊ฒŒ ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋งŽ์ด ํ’€์–ด๋ณด์ž.

'Coding Test > Algorithm' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

Programmers] ๊ทค ๊ณ ๋ฅด๊ธฐ  (0) 2023.03.28
์ˆœ์—ด  (0) 2023.03.18
Programmers] [1์ฐจ] ์บ์‹œ  (0) 2023.03.18
Programmers] ๊ด„ํ˜ธ ํšŒ์ „ํ•˜๊ธฐ  (0) 2023.03.14
Programmers] ์ตœ์†Ÿ๊ฐ’ ๋งŒ๋“ค๊ธฐ  (0) 2023.03.13

+ Recent posts