어흥

[프로그래머스] 점 찍기 (C++) 본문

카테고리 없음

[프로그래머스] 점 찍기 (C++)

라이언납시오 2023. 8. 8. 17:34
728x90
반응형

문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/140107

 

프로그래머스

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

programmers.co.kr

1. 주의할 점

- 피타고라스의 a*a + b*b = c*c를 이용해서 해결하는데, 이때 두 수의 곱이 int를 벗어날 수 있으므로 long long으로 변환해서 계산한다

 

2. 구현

- 한 변의 크기를 K의 배수로 설정하고, 다른 변의 제곱을 Dist로 표현한다. 이때 다른 변 또한 0이 될 수 있으므로 +1을 수행한다

#include <string>
#include <vector>
#include <math.h>
using namespace std;

long long solution(int k, int d) {
    long long answer = 0;
    for(int i=0;i<=d;i+=k){
        long long dist = (long long)d*d-(long long)i*i;
        answer += floor(sqrt(dist) / k) + 1;
    }
    return answer;
}
728x90
반응형
Comments