๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ“– Problem Solution/Programmers

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ๋ฉ€์ฉกํ•œ ์‚ฌ๊ฐํ˜• Swift

by Fomagran ๐Ÿ’ป 2020. 3. 21.
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 ์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

ํ’€์ด:์šฐ์„  ์‹œ์ž‘ (0,0) ๋ถ€ํ„ฐ ๋ (w,h)๊นŒ์ง€ ๋ฐ˜๋ณต๋˜๋Š” ๊ตฌ๊ฐ„์„ ๊ตฌํ•˜๋ ค๋ฉด w,h์˜ ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜๋ฅผ ๊ตฌํ•ด์•ผ ํ•œ๋‹ค.

์ตœ๋Œ€๊ณต์•ฝ์ˆ˜๋งŒํผ ๋ฐ˜๋ณต์ด ๋œ๋‹ค๋Š” ๋œป์ด๋‹ค.

๋˜ํ•œ w์™€ h๋ฅผ ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜๋กœ ๋‚˜๋ˆ„๋ฉด x,y๊ฐ€ ์–ด๋–ค ์ˆ˜๋กœ ๋ฐ˜๋ณต์ด ๋˜๋Š”์ง€ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด 8,12๋ฉด ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜๊ฐ€ 4์ด๋ฏ€๋กœ 8/4 12/4๋Š” ๊ฐ ๊ฐ 2,3์ด๋ฏ€๋กœ

x๊ฐ€ 2 y3์ธ ์‚ฌ๊ฐํ˜•์ด 4๋ฒˆ ๋ฐ˜๋ณต๋œ๋‹ค๋Š” ๋œป์ด๋‹ค.

์ด๋ ‡๊ฒŒ ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜๋กœ ๋‚˜๋ˆˆ x,y๋กœ ์ด๋ฃจ์–ด์ง„ ์‚ฌ๊ฐํ˜•์€ x์ถ•์€ x๋งŒํผ ์„ ์ด ์ง€๋‚˜๊ฐ€๊ณ  y์ถ•์€ y๋งŒํผ ์„ ์ด ์ง€๋‚˜๊ฐ€๊ฒŒ ๋œ๋‹ค.

ํ•˜์ง€๋งŒ ์‹œ์ž‘ํ•  ๋• ํ•˜๋‚˜์˜ ์‚ฌ๊ฐํ˜•์ด ๊ฒน์น˜๋ฏ€๋กœ 1์„ ๋นผ์ค€๋‹ค.

๊ณ ๋กœ 2+3-1 = 4๊ฐ€ ์„ ์ด ์ง€๋‚˜๊ฐ„ ์‚ฌ๊ฐํ˜•์˜ ์ˆ˜์ด๋‹ค. ์ด๊ฒƒ์ด 4๋ฒˆ ๋ฐ˜๋ณต๋˜๋ฏ€๋กœ 4 * 4 ๋Š” 16๊ฐœ์ด๋‹ค.

์—ฌ๊ธฐ์„œ ์ด ์‚ฌ๊ฐํ˜• 8 * 12 = 96์—์„œ ์„ ์ด ์ง€๋‚˜๊ฐ„ ์‚ฌ๊ฐํ˜• ์ˆ˜๋ฅผ ๋นผ์ค˜์•ผ ํ•˜๋ฏ€๋กœ 96-16์€ 80์ด ๋˜๋Š”๊ฒƒ์ด๋‹ค.

1
2
3
4
5
6
7
8
9
10
func solution(_ w:Int, _ h:Int-> Int64{
    var a = w
    var b = h
    while a%b != 0 {
       let x = a%b
       a = b
       b = x
    }
    return Int64(w*h-(w+h-b))
}
http://colorscripter.com/info#e" target="_blank" style="color:#e5e5e5text-decoration:none">Colored by Color Scripter
 

์ตœ๋Œ€๊ณต์•ฝ์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” ๋ฒ•

a๋ฅผ b๋กœ ๋‚˜๋ˆˆ ๋‚˜๋จธ์ง€๊ฐ€ 0์ด ๋  ๋•Œ๊ฐ€์ง€ 

x์— a%b๋ฅผ ์ €์žฅํ•ด๋‘๊ณ 

a = b๊ฐ€ ๋˜๊ณ  

b = x๊ฐ€ ๋˜๋„๋ก ๋ฐ˜๋ณตํ•ด์ฃผ๋ฉด

a%b๊ฐ€ 0์ด ๋˜์—ˆ์„ ๋•Œ ์ตœ๋Œ€๊ณต์•ฝ์ˆ˜๋Š” b๊ฐ€ ๋œ๋‹ค.

์ตœ๋Œ€๊ณต์•ฝ์ˆ˜๋ผ๋Š” ๊ฒƒ๋งŒ ์•Œ์•˜๋‹ค๋ฉด ์‰ฝ๊ฒŒ ํ’€์—ˆ์„ํ…๋ฐ ๊ทธ๋ฆผ๋„ ๊ทธ๋ ค๋ณด๊ณ  ๊ทœ์น™์„ ์•Œ๋ ค๋‹ค๊ฐ€ ๊ฒฐ๊ตญ์—” ๋‚˜๋„ ์–ด๋–ป๊ฒŒ ํ‘ธ๋Š”์ง€ ๋ดค๋‹ค.

ํ•˜.... ๋๊นŒ์ง€ ํ’€์–ด๋ดค์–ด์•ผํ–ˆ๋Š”๋ฐ...

728x90
๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€