์ฝ”ํ…Œ์ค€๋น„

<์™„์ „ํƒ์ƒ‰> ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ์นดํŽซ

์š”๋Œœ๋‹ค 2023. 1. 12. 12:13

https://school.programmers.co.kr/learn/courses/30/lessons/42842

 

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

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

programmers.co.kr

 

def solution(brown, yellow):
    stack = []
    answer = []
    for i in range(1,brown+yellow+1):
        if (brown+yellow) % i == 0:
            stack.append(i)
    if len(stack) % 2 == 0:
        answer.append(stack[len(stack)//2])
        answer.append(stack[len(stack)//2-1])
    else :
        answer.append(stack[len(stack)//2])
        answer.append(stack[len(stack)//2])

     
    return answer

๋‚ด๊ฐ€ ์ƒ๊ฐํ–ˆ๋˜ ํ’€์ด์ด๋‹ค. 

์šฐ์„  brown+yellow ๊ฐ’์˜ ์•ฝ์ˆ˜๋“ค์„ ๊ตฌํ•ด์ฃผ๊ณ , ๊ทธ ์ ˆ๋ฐ˜ index๋ฅผ ์ถœ๋ ฅํ•ด์ฃผ๋ฉด ๋œ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๋Š”๋ฐ 76.9์ ๋ฐ–์— ๋ฐ›์ง€ ๋ชปํ•˜์˜€๋‹ค.

brown+yellow ๊ฐ’์˜ ์•ฝ์ˆ˜๋“ค์„ ๋‹ค ๊ตฌํ•ด์ฃผ๋‹ค๋ณด๋‹ˆ ๊ฐ’์ด ํด ๋•Œ, ์‹œ๊ฐ„ ์ดˆ๊ณผ๊ฐ€ ์ผ์–ด๋‚œ ๊ฒƒ ๊ฐ™๋‹ค. 

 

ํ•ด๊ฒฐํ•˜์ง€ ๋ชปํ•ด ๋‹ค๋ฅธ ์‚ฌ๋žŒ์˜ ํ’€์ด๋ฅผ ์ฐธ๊ณ ํ•˜์˜€๋Š”๋ฐ,

๊ฐˆ์ƒ‰-4) // 2 = ๋…ธ๋ž€์ƒ‰์˜ col+row๊ฐ€ ๋‚˜์˜ค๊ฒŒ ๋œ๋‹ค.

์–ด๋–ป๊ฒŒ ์ด๋Ÿฐ ์‹์„ ์ƒ๊ฐํ•ด๋‚ด๋Š” ๊ฒƒ์ผ๊นŒ? ์ง„์งœ ๋‚˜๋Š” ๋ถ€์กฑํ•˜๊ณ  ๋ถ€์กฑํ•˜๊ตฌ๋‚˜ ๊นจ๋‹ฌ์•˜๋‹ค.

์ด๋ฅผ ์ฐธ๊ณ ํ•˜์—ฌ ๋‹ค์‹œ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•ด๋ณด์•˜๋‹ค.

def solution(brown, yellow):
  ab = brown + yellow
  for a in range(ab, 2, -1): #ab๋ถ€ํ„ฐ 2๊นŒ์ง€ ๋ฐ˜๋ณต
    b = ab // a
    if ab % a == 0: #์ฆ‰, ab๊ฐ€ a๋กœ ๋‚˜๋ˆ ์ง„๋‹ค๋ฉด? ๊ทธ๋Ÿผ b๊ฐ€ ๋‚˜์˜ฌ ์ˆ˜ ์žˆ์œผ๋‹ˆ๊น
      if yellow == (a-2)*(b-2): ##yellow ๊ฐœ์ˆ˜ ์กฐ๊ฑด ์ถฉ์กฑํ•˜๋Š”์ง€
        return [a,b]