๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ’ป DEV/ใ„ด problems

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค] Summer/Winter Coding(2019) : ๋ฉ€์ฉกํ•œ ์‚ฌ๊ฐํ˜•

by vodkassi 2021. 7. 8.
728x90

๋ฌธ์ œ ์„ค๋ช…

 

๊ฐ€๋กœ ๊ธธ์ด๊ฐ€ Wcm, ์„ธ๋กœ ๊ธธ์ด๊ฐ€ Hcm์ธ ์ง์‚ฌ๊ฐํ˜• ์ข…์ด๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ข…์ด์—๋Š” ๊ฐ€๋กœ, ์„ธ๋กœ ๋ฐฉํ–ฅ๊ณผ ํ‰ํ–‰ํ•˜๊ฒŒ ๊ฒฉ์ž ํ˜•ํƒœ๋กœ ์„ ์ด ๊ทธ์–ด์ ธ ์žˆ์œผ๋ฉฐ, ๋ชจ๋“  ๊ฒฉ์ž์นธ์€ 1cm x 1cm ํฌ๊ธฐ์ž…๋‹ˆ๋‹ค. ์ด ์ข…์ด๋ฅผ ๊ฒฉ์ž ์„ ์„ ๋”ฐ๋ผ 1cm × 1cm์˜ ์ •์‚ฌ๊ฐํ˜•์œผ๋กœ ์ž˜๋ผ ์‚ฌ์šฉํ•  ์˜ˆ์ •์ด์—ˆ๋Š”๋ฐ, ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ์ด ์ข…์ด๋ฅผ ๋Œ€๊ฐ์„  ๊ผญ์ง€์  2๊ฐœ๋ฅผ ์ž‡๋Š” ๋ฐฉํ–ฅ์œผ๋กœ ์ž˜๋ผ ๋†“์•˜์Šต๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋ฏ€๋กœ ํ˜„์žฌ ์ง์‚ฌ๊ฐํ˜• ์ข…์ด๋Š” ํฌ๊ธฐ๊ฐ€ ๊ฐ™์€ ์ง๊ฐ์‚ผ๊ฐํ˜• 2๊ฐœ๋กœ ๋‚˜๋ˆ„์–ด์ง„ ์ƒํƒœ์ž…๋‹ˆ๋‹ค. ์ƒˆ๋กœ์šด ์ข…์ด๋ฅผ ๊ตฌํ•  ์ˆ˜ ์—†๋Š” ์ƒํƒœ์ด๊ธฐ ๋•Œ๋ฌธ์—, ์ด ์ข…์ด์—์„œ ์›๋ž˜ ์ข…์ด์˜ ๊ฐ€๋กœ, ์„ธ๋กœ ๋ฐฉํ–ฅ๊ณผ ํ‰ํ–‰ํ•˜๊ฒŒ 1cm × 1cm๋กœ ์ž˜๋ผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋งŒํผ๋งŒ ์‚ฌ์šฉํ•˜๊ธฐ๋กœ ํ•˜์˜€์Šต๋‹ˆ๋‹ค.


๊ฐ€๋กœ์˜ ๊ธธ์ด W์™€ ์„ธ๋กœ์˜ ๊ธธ์ด H๊ฐ€ ์ฃผ์–ด์งˆ ๋•Œ, ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ •์‚ฌ๊ฐํ˜•์˜ ๊ฐœ์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด ์ฃผ์„ธ์š”.


์ œํ•œ ์‚ฌํ•ญ

  • W, H : 1์–ต ์ดํ•˜์˜ ์ž์—ฐ์ˆ˜


์ž…์ถœ๋ ฅ ์˜ˆ

 

W H result
8 12 80


์ž…์ถœ๋ ฅ ์˜ˆ ์„ค๋ช…

 

์˜ˆ์ œ #1: ๊ฐ€๋กœ๊ฐ€ 8, ์„ธ๋กœ๊ฐ€ 12์ธ ์ง์‚ฌ๊ฐํ˜•์„ ๋Œ€๊ฐ์„  ๋ฐฉํ–ฅ์œผ๋กœ ์ž๋ฅด๋ฉด ์ด 16๊ฐœ ์ •์‚ฌ๊ฐํ˜•์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์›๋ž˜ ์ง์‚ฌ๊ฐํ˜•์—์„œ๋Š” 96๊ฐœ์˜ ์ •์‚ฌ๊ฐํ˜•์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ์—ˆ์œผ๋ฏ€๋กœ, 96 - 16 = 80 ์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

 

 

๋‚˜์˜ ์†”๋ฃจ์…˜

 

๊ฐ๋„๋ฅผ ๊ตฌํ•ด์•ผ ํ•˜๋‚˜ ์‹ถ์—ˆ๋‹ค๊ฐ€, ๊ฐ๋„๋ฅผ ๊ตฌํ•ด๋„ ํ™œ์šฉํ•  ๋ฐฉ๋„๊ฐ€ ๋– ์˜ค๋ฅด์ง€ ์•Š์•„ ๊ฐ€๋กœ ์„ธ๋กœ ๊ธธ์ด์™€ ๋‚จ๋Š” ์‚ฌ๊ฐํ˜•์˜ ๊ณต์‹์„ ์ดํ•ดํ•ด๋ณด๊ณ ์ž ํ–ˆ๋‹ค. 

 

์ง์ ‘ ๊ทธ๋ฆผ์„ ๊ทธ๋ ค๊ฐ€๋ฉฐ ์‹คํ—˜ํ•ด ๋ณด์•˜๋‹ค.

 

๋‹ค์–‘ํ•œ ํŒจํ„ด์„ ์ฐพ์•„๋ณด๋ ค๋‹ค๊ฐ€ ๋ฌธ๋“ 

 

5, 4 = 20 - 8 = 12

3, 7 = 21 - 9 = 12

 

์—์„œ ๊ณตํ†ต์ ์„ ๋ฐœ๊ฒฌํ–ˆ๋‹ค. w * h ๊ฐ’์—์„œ w + h - 1 ์„ ํ•ด ์ฃผ๋‹ˆ ์ •๋‹ต์ด ๋‚˜์™”๋‹ค. 

ํŒจํ„ด์ด ์ˆจ์–ด์žˆ๋‹ค๋Š” ๊ฒƒ๊นŒ์ง€๋Š” ์•Œ์•˜์œผ๋‚˜ 1์ด ์–ด๋””์„œ ๋‚˜์˜จ๊ฑด์ง€ ์ œ๋Œ€๋กœ ์ดํ•ดํ•˜์ง€ ๋ชปํ–ˆ๋‹ค. 

 

8, 12 = 96 - 16 = 80 

 

๊ณผ ๊ฐ™์ด, 1์„ ๋Œ€์ž…ํ•ด๋„ ๋‹ต์ด ๋‚˜์˜ค์ง€ ์•Š๋Š” ์ผ€์ด์Šค๋„ ๋ถ„๋ช… ์žˆ์—ˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

๋ฌธ๋“ 8 + 12 = 20 - 4 = 16 ์ด๋ผ๋Š” ์‚ฌ์‹ค์ด ๋ˆˆ์— ๋ณด์˜€๊ณ , ๋‹ค๋ฅธ ๊ณณ์—์„œ๋Š” 1์ด๋˜ ์ˆ˜๊ฐ€ ์™œ ์—ฌ๊ธฐ์„œ๋Š” 4๊ฐ€ ๋˜์—ˆ๋Š”์ง€ ๊ณ ๋ฏผํ•ด๋ณด์•˜๋‹ค. 

ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ˆ˜ํ•™ ๊ณต์‹ (ํ”ผ๋ณด๋‚˜์น˜, ์ˆ˜์—ด, ์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜ ๋“ฑ) ์„ ๋– ์˜ฌ๋ ค ๋ณด๋‹ค๊ฐ€ ๋‹ต์„ ์ฐพ์„ ์ˆ˜ ์žˆ์—ˆ๋‹ค.

์ค‘๊ฐ„์— ๋“ค์–ด๊ฐ€๋Š” ์ˆซ์ž๋Š” w ๊ณผ h ์˜ ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜์˜€๋‹ค. 

 

๋”ฐ๋ผ์„œ ์ง์‚ฌ๊ฐํ˜•์„ ์ ‘์–ด์„œ ๋‚จ๋Š” ์ •์‚ฌ๊ฐํ˜•์˜ ๊ฐœ์ˆ˜๋ฅผ ์„ธ๋Š” ๊ณต์‹์€ 

w * h - (w + h - ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜) ์ด๋ผ๋Š” ๊ฒฐ๋ก ์„ ๋‚ด๋ฆฌ๊ณ  ์ฝ”๋“œ๋ฅผ ์งœ ๋ณด์•˜๋‹ค. 

def solution(w,h):
    s, l = min(w,h), max(w,h)
    gcd = 1
    for num in range(s, 0, -1):
        if s%num == 0 and l%num == 0:
            gcd = num
            break
    return w * h - (w + h - gcd)

 

๋ฐฐ์šด ์ 

  • ๋‹ต์€ ์–ธ์ œ๋‚˜ ๋ณต์žกํ•œ ์ˆ˜์‹์ด ์•„๋‹Œ ๊ฐ„๋‹จํ•œ ๋…ผ๋ฆฌ์— ์กด์žฌํ•œ๋‹ค. ์•Œ๊ณ  ์žˆ๋Š” ์ง€์‹์„ ์ด๋™์›ํ•˜์—ฌ ํ•˜๋‚˜์”ฉ ์†Œ๊ฑฐํ•ด๋‚˜๊ฐ€๋‹ค ๋ณด๋ฉด ๋‹ต์„ ์ฐพ์„ ์ˆ˜ ์žˆ๋‹ค. 
  • ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜, ์ตœ์†Œ๊ณต๋ฐฐ์ˆ˜ ๊ฐœ๋…์„ ๊ฐ€๋ฒผ์ด ์—ฌ๊ธฐ์ง€ ๋ง๊ณ  ์•Œ๊ณ ๋ฆฌ์ฆ˜์—์„œ ์ž์ฃผ ๋– ์˜ฌ๋ ค์•ผ ํ•œ๋‹ค. 

๋Œ“๊ธ€