study
점찍기[프로그래머스]
Date: 2026-06-06 11:29
Update: 2026-06-06 13:28
점찍기[프로그래머스]
접근법:
- 현재 i 의 위치에서 도달 할수 있는 최대 y을 구한다.
- y축 위에서 k의 배수 인 점의 갯수 + 0 일 때의 1개
#include <string>
#include <vector>
#include <cmath>
using namespace std;
long long solution(int k, int d) {
long long answer = 0;
for(int i = 0; i <= d; i += k)
{
long long ys = (long long) d * d - (long long) i * i;
long long y = sqrt(ys);
answer += (y / k) + 1;
}
return answer;
}
시간이 오래 걸리는 접근법:
- 이중루프를 사용해서 시간제한을 통과하지 못했다.
#include <string>
#include <vector>
#include <cmath>
#include <iostream>
using namespace std;
float distance(int x, int y)
{
return sqrt(pow((float)x,2) + pow((float)y,2));
}
long long solution(int k, int d) {
long long answer = 0;
for(int i = 0 ; i <= d; i += k)
{
for(int j = 0; j <= d; j += k)
{
//cout << distance(i, j) << " ";
if(distance(i, j) <= d)
answer++;
}
//cout << endl;
}
return answer;
}
.gif)