https://school.programmers.co.kr/learn/courses/30/lessons/140107
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
#include <string>
#include <vector>
#include <cmath>
using namespace std;
long long solution(int k, int d) {
long long answer = 0;
for(int x=0;x<=d;x+=k)
{
int mayY = sqrt((long long)d*d - (long long)x*x);
answer += mayY/k + 1;
}
return answer;
}
원점부터 k 간격으로 x와 y를 점 찍을 수 있는데, 원점으로의 거리가 d를 넘으면 안된다.
이 때, 몇개의 점을 찍을 수 있는가가 문제이다.
x를 0부터 시작해서 최대 d까지 k간격으로 찍으면서 이 때, 최대 y를 구해 몇개의 점이 찍히는지를 계산하는 방식으로 접근한다.
mayY는 거리공식을 이용해 구한다. mayY/k를 하면 0부터 최댓값사이에 몇개가 찍힐 수 있는지를 구할 수 있다.
이 때, 원점을 계산하기 위해서 + 1을 한다.
'알고리즘 > 프로그래머스 2단계' 카테고리의 다른 글
프로그래머스 - 마법의 엘리베이터 - C++ (0) | 2024.09.23 |
---|---|
프로그래머스 - 디펜스 게임 - C++ (0) | 2024.09.23 |
프로그래머스 - 시소 짝꿍 - C++ (0) | 2024.09.19 |
프로그래머스 - 귤 고르기 - C++ (0) | 2024.09.12 |
프로그래머스 - 광물캐기 - C++ (2) | 2024.09.05 |