https://school.programmers.co.kr/learn/courses/30/lessons/62048
초기 아이디어
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;
}
구상 사진
'코딩테스트 > 문제풀이' 카테고리의 다른 글
[220806] Level_ 1 2016년 (0) | 2022.08.06 |
---|---|
[220805] Level_ 1 완주하지 못한 선수 (오답노트) (0) | 2022.08.05 |
[220803] Level1_ 로또의 최고 순위와 최저 순위 (0) | 2022.08.03 |
[220801] Level1_ 체육복 (0) | 2022.08.03 |
[220728] Level1_ 숫자 문자열과 영단어 (0) | 2022.07.29 |