본문 바로가기
coding/algorithm

[programmers] Lv.2 멀쩡한 사각형(c++) - 2nd

by 눈부신음표 2022. 5. 18.
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

댓글