코딩테스트/문제풀이

[220730] Level2_ 멀쩡한 사각형

Honey Badger 2022. 7. 31. 04:56

https://school.programmers.co.kr/learn/courses/30/lessons/62048

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

초기 아이디어

1. 직사각형의 가로, 세로를 각각 x축, y축으로 보고 가로지르는 대각선을 그래프로 생각하여 대각선의 기울기를 구한다.

2. for문을 가로or세로 길이만큼 돌려 i변과 그래프가 만나는 지점의 값을 구한다. 

3. 처음 값은 내림하고 구한 값은 올림한다. 

4. 제외할 값을 총 정사각형 갯수에서 빼주었다면, 처음값에 구한 값을 저장하고 2번 과정이 다시 시행된다. 

5. 다 제외했다면 총 값을 return해주기만 하면 된다. 

#include <cmath>

using namespace std;

long long solution(int w, int h) {
    long long answer = 0;
    double begin = 0, finish;
    for (int i = 1; i <= w; i++)
    {
        finish = (double)i * h / w;
        answer += ceil(finish) - floor(begin);
        begin = finish;
    }
    return (long long)w * h - answer;
}

 

 

구상 사진