๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ”ฅ PS(Problem Solving) ๐Ÿ”ฅ/programmers

[programmers] Summer/Winter Coding(2019) ๋ฉ€์ฉกํ•œ ์‚ฌ๊ฐํ˜•

by dar0m! 2020. 6. 2.
 

์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต - ๋ฉ€์ฉกํ•œ ์‚ฌ๊ฐํ˜•

๊ฐ€๋กœ ๊ธธ์ด๊ฐ€ Wcm, ์„ธ๋กœ ๊ธธ์ด๊ฐ€ Hcm์ธ ์ง์‚ฌ๊ฐํ˜• ์ข…์ด๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ์ข…์ด์—๋Š” ๊ฐ€๋กœ, ์„ธ๋กœ ๋ฐฉํ–ฅ๊ณผ ํ‰ํ–‰ํ•˜๊ฒŒ ๊ฒฉ์ž ํ˜•ํƒœ๋กœ ์„ ์ด ๊ทธ์–ด์ ธ ์žˆ์œผ๋ฉฐ, ๋ชจ๋“  ๊ฒฉ์ž์นธ์€ 1cm x 1cm ํฌ๊ธฐ์ž…๋‹ˆ๋‹ค. ์ด ์ข…์ด๋ฅผ ๊ฒฉ์ž ์„ ์„ ๏ฟฝ๏ฟฝ

programmers.co.kr

๋ฌธ์ œ

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

์ œํ•œ์‚ฌํ•ญ

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

์ž…์ถœ๋ ฅ ์˜ˆ

W H result
8 12 80

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

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

ํ•ด๊ฒฐ

key point, 1์ฐจ ํ•จ์ˆ˜๋ฅผ ์ƒ๊ฐํ•œ๋‹ค!

์ขŒ์šฐ๋Œ€์นญ

  • ์ขŒ์šฐ๋Œ€์นญํ•œ ๊ทธ๋ฆผ์„ ์‚ดํŽด๋ณด๋ฉด
  • ์™ผ์ชฝ ํ•˜๋‹จ ๊ผญ์ง€์ ์ด (0, 0)์ด ๋œ๋‹ค
  • ๊ทธ๋Ÿฌ๋ฉด (0, 0), (8, 12)๋ฅผ ์ง€๋‚˜๋Š” 1์ฐจ ํ•จ์ˆ˜๊ฐ€ ๊ทธ๋ ค์ง€๊ณ 
  • ๊ทธ๋ ค์ง€๋Š” 1์ฐจ ํ•จ์ˆ˜์˜ ์‹์„ ๊ตฌํ•ด๋ณด๋ฉด
    • (y2 - y1) / (x2 - x1) = y ์ฆ๊ฐ€๋Ÿ‰ / x ์ฆ๊ฐ€๋Ÿ‰ = ๊ธฐ์šธ๊ธฐ
    • x1, y1 ์€ ์›์  (0, 0)์ด ๋˜๋ฏ€๋กœ
    • y = (y2/x2)x ์ด๋‹ค.
  • 1์ฐจ ํ•จ์ˆ˜์˜ ์‹์„ ์ด์šฉํ•˜๋ฉด x๊ฐ’์— ๋”ฐ๋ผ ํ•จ์ˆ˜ ์•„๋ž˜๋กœ ๊ทธ๋ ค์ง€๋Š” ์ •์‚ฌ๊ฐํ˜•์˜ ๊ฐœ์ˆ˜๋ฅผ ์•Œ ์ˆ˜ ์žˆ๋‹ค.
  • ์œ ์˜ํ•  ์ ์€ ํ•จ์ˆ˜ ์œ„์˜ ์ •์‚ฌ๊ฐํ˜•๋„ ๊ณ ๋ คํ•ด์•ผ ํ•˜๋ฏ€๋กœ ์ •๋‹ต์˜ 2๋ฐฐ๋ฅผ ํ•ด์ฃผ์–ด์•ผ ํ•œ๋‹ค.
  • ๋˜ํ•œ, h, w๊ฐ€ ๊ฐ๊ฐ ์ตœ๋Œ€ 1์–ต์ด ๋  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๊ณฑํ•˜๊ธฐ ์—ฐ์‚ฐ์„ ํ•˜๋ฉด์„œ int ๋ฒ”์œ„๋ฅผ ๋„˜์–ด๊ฐˆ ์ˆ˜ ์žˆ๊ณ 
    answer ๋˜ํ•œ ๋ˆ„์ ํ•ฉ์„ ๊ตฌํ•˜๋ฉด์„œ int ๋ฒ”์œ„๊ฐ€ ๋„˜์–ด๊ฐˆ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ๋ฐ˜๋“œ์‹œ long longํ˜•์œผ๋กœ ๋ฐ”๊ฟ”์ฃผ์–ด์•ผ ํ•œ๋‹ค.

์ฝ”๋“œ

1
2
3
4
5
6
7
8
9
using namespace std;
 
long long solution(int w,int h) {
    long long answer = 0;
    for(int i = 0; i < w; i++){
        answer += ((long long)h * (long long)i) / w;
    }
    return answer * 2;
}
cs

๋Œ“๊ธ€