Problem Solving/[ํ•ญํ•ด99] TIL

99ํด๋Ÿฝ ์ฝ”ํ…Œ ์Šคํ„ฐ๋”” 21์ผ์ฐจ TIL / ์™„์ „ํƒ์ƒ‰

geum 2024. 11. 17. 23:52

โœ๏ธ ๋ฌธ์ œ

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค/Programmers] ์นดํŽซ(https://school.programmers.co.kr/learn/courses/30/lessons/42842)

 

Leo๋Š” ์นดํŽซ์„ ์‚ฌ๋Ÿฌ ๊ฐ”๋‹ค๊ฐ€ ์•„๋ž˜ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์ด ์ค‘์•™์—๋Š” ๋…ธ๋ž€์ƒ‰์œผ๋กœ ์น ํ•ด์ ธ ์žˆ๊ณ  ํ…Œ๋‘๋ฆฌ 1์ค„์€ ๊ฐˆ์ƒ‰์œผ๋กœ ์น ํ•ด์ ธ ์žˆ๋Š” ๊ฒฉ์ž ๋ชจ์–‘ ์นดํŽซ์„ ๋ดค์Šต๋‹ˆ๋‹ค.

 

Leo๋Š” ์ง‘์œผ๋กœ ๋Œ์•„์™€์„œ ์•„๊นŒ ๋ณธ ์นดํŽซ์˜ ๋…ธ๋ž€์ƒ‰๊ณผ ๊ฐˆ์ƒ‰์œผ๋กœ ์ƒ‰์น ๋œ ๊ฒฉ์ž์˜ ๊ฐœ์ˆ˜๋Š” ๊ธฐ์–ตํ–ˆ์ง€๋งŒ, ์ „์ฒด ์นดํŽซ์˜ ํฌ๊ธฐ๋Š” ๊ธฐ์–ตํ•˜์ง€ ๋ชปํ–ˆ์Šต๋‹ˆ๋‹ค. Leo๊ฐ€ ๋ณธ ์นดํŽซ์—์„œ ๊ฐˆ์ƒ‰ ๊ฒฉ์ž์˜ ์ˆ˜ brown, ๋…ธ๋ž€์ƒ‰ ๊ฒฉ์ž์˜ ์ˆ˜ yellow๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์งˆ ๋•Œ ์นดํŽซ์˜ ๊ฐ€๋กœ, ์„ธ๋กœ ํฌ๊ธฐ๋ฅผ ์ˆœ์„œ๋Œ€๋กœ ๋ฐฐ์—ด์— ๋‹ด์•„ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”.

 

์ œํ•œ์‚ฌํ•ญ

  • ๊ฐˆ์ƒ‰ ๊ฒฉ์ž์˜ ์ˆ˜ brown์€ 8 ์ด์ƒ 5,000 ์ดํ•˜์ธ ์ž์—ฐ์ˆ˜์ž…๋‹ˆ๋‹ค.
  • ๋…ธ๋ž€์ƒ‰ ๊ฒฉ์ž์˜ ์ˆ˜ yellow๋Š” 1 ์ด์ƒ 2,000,000 ์ดํ•˜์ธ ์ž์—ฐ์ˆ˜์ž…๋‹ˆ๋‹ค.
  • ์นดํŽซ์˜ ๊ฐ€๋กœ ๊ธธ์ด๋Š” ์„ธ๋กœ ๊ธธ์ด์™€ ๊ฐ™๊ฑฐ๋‚˜, ์„ธ๋กœ ๊ธธ์ด๋ณด๋‹ค ๊น๋‹ˆ๋‹ค.

 

๐Ÿค– ์ž…์ถœ๋ ฅ ์˜ˆ์‹œ

 

๐Ÿง ๋‚œ์ด๋„/์†Œ์š” ์‹œ๊ฐ„

โœ… ๋‚œ์ด๋„: ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค Level.2

โœ… ์†Œ์š” ์‹œ๊ฐ„: 22๋ถ„

โœ… ๊ถŒ์žฅ ์‹œ๊ฐ„: 1์‹œ๊ฐ„ 15๋ถ„

 

๐Ÿ’ก ํ’€์ด

1) ๋ฌธ์ œ ์ดํ•ด

์ „์ฒด ๊ฒฉ์ž ์ˆ˜๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ width*height = brown+yellow ์ด๋ฉด์„œ (width-2)*(height-2) = yellow์ธ width ๊ฐ’, height ๊ฐ’์„ ์ฐพ์œผ๋ฉด ๋œ๋‹ค.

 

(width-2)*(height-2) = yellow ์„ ๊ณ ๋ คํ•˜์ง€ ์•Š์œผ๋ฉด ๋ฌธ์ œ์—์„œ ์ฃผ์–ด์ง„ ์กฐ๊ฑด๊ณผ ๋‹ค๋ฅธ ๊ทธ๋ฆผ์ด ๋‚˜์˜ค๊ฒŒ ๋œ๋‹ค.

 

์˜ˆ๋ฅผ ๋“ค์–ด brown = 18, yellow = 6 ์ผ ๋•Œ width๊ฐ€ height ์ด์ƒ์ด๊ณ  width*height๊ฐ€ brown+yellow ๋ฉด ๋ฐ˜๋ณต๋ฌธ์„ ํƒˆ์ถœํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด๋ณด์ž. ์—ฌ๊ธฐ์„œ (width-2)*(height-2) = yellow ์กฐ๊ฑด์ด ์—†์„ ๊ฒฝ์šฐ width = 6, height = 4์—์„œ ๋ฐ˜๋ณต๋ฌธ์„ ๋น ์ ธ๋‚˜์˜ค๊ฒŒ ๋˜๋Š”๋ฐ, ์ด ๊ฐ’์„ ๊ฐ€์ง€๊ณ  ๊ฐˆ์ƒ‰ ๊ฒฉ์ž๊ฐ€ ๋…ธ๋ž€์ƒ‰ ๊ฒฉ์ž๋ฅผ ๋‘˜๋Ÿฌ์‹ธ๋Š” ๊ทธ๋ฆผ์„ ๊ทธ๋ ค๋ณด๋ฉด brown = 16, yellow = 8 ์ด์–ด์•ผ ํ•˜๋Š” ๊ฑธ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค. ์ฃผ์–ด์ง„ brown, yellow ๊ฐ’๊ณผ ๋‹ค๋ฅด๊ธฐ ๋•Œ๋ฌธ์— [6, 4]๋Š” ์˜ค๋‹ต์ด๋‹ค.

 

2) ์•„์ด๋””์–ด ํ๋ฆ„

โ‘  i: 1๋ถ€ํ„ฐ max(brown, yellow)๊นŒ์ง€ ๋ฐ˜๋ณต

 

โ‘ก j: (brown+yellow)//i

 

โ‘ข i >= j ์ด๊ณ  i*j == total ์ด๋ฉด์„œ (i-2)*(j-2) == yellow ์ด๋ฉด ๋ฐ˜๋ณต๋ฌธ ํƒˆ์ถœ

 

3) ๊ตฌํ˜„

def solution(brown, yellow):
    total = brown+yellow
    
    width, height = 0, 0
    
    for i in range(1, max(brown, yellow)):
        j = total//i
        
        if i >= j and i*j == total:
            if (i-2)*(j-2) == yellow:
                width = i
                height = j
                break
            
    return [width, height]

 

4) ์–ด๋ ค์› ๋˜ ์ /๋ฐฐ์šด ์ 

๐Ÿšจ ์–ด๋ ค์› ๋˜ ์ 

  • ์—†์Œ

โ— ๋ฐฐ์šด ์ 

  • ์ˆจ์–ด ์žˆ๋Š” ์กฐ๊ฑด์„ ์ž˜ ์ƒ๊ฐํ•ด๋‚ด์•ผ ํ•œ๋‹ค.