728x90
새로운 아이디어가 생겨서 한번 더 풀었다.
*좌표에도 그려보자*
my full code
using namespace std;
long long solution(int w,int h) {
long long answer = 0;
for(int i=0; i<w; i++){
answer += (int)((double)h*i/w);
}
return 2*answer;
}
문제
https://programmers.co.kr/learn/courses/30/lessons/62048
코딩테스트 연습 - 멀쩡한 사각형
가로 길이가 Wcm, 세로 길이가 Hcm인 직사각형 종이가 있습니다. 종이에는 가로, 세로 방향과 평행하게 격자 형태로 선이 그어져 있으며, 모든 격자칸은 1cm x 1cm 크기입니다. 이 종이를 격자 선을
programmers.co.kr
728x90
[접근]
좌표에 그렸을때, i번째 위치의 height는H*i/W가 된다. 이때, 남는 멀쩡한 정사각형은 H*i/W의 정수부분임을 알 수있다.
오른쪽 그림은 좀 더 이해하기 쉽게 숫자로 적었다.
i를 0부터 W-1까지 반복하여 answer 에 더한뒤 2배하면 정답이 된다.


for(int i=0; i<w; i++){
answer += (int)((double)h*i/w);
}
return 2*answer;728x90
'coding > algorithm' 카테고리의 다른 글
| [programmers] Lv.1 없는 숫자 더하기(c++) (0) | 2022.05.19 |
|---|---|
| [SW Expert Academy] D2 1204. 최빈수 구하기(c++) (0) | 2022.05.19 |
| [programmers] Lv.2 멀쩡한 사각형(c++) - 1st (0) | 2022.05.18 |
| [SW Expert Academy] D2 1859. 백만 장자 프로젝트(c++) (0) | 2022.05.18 |
| [SW Expert Academy] D1 2072. 홀수만 더하기(c++) (0) | 2022.05.18 |
댓글