728x90
반응형
목차
문제
https://school.programmers.co.kr/learn/courses/30/lessons/140107
프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
문제 방향
다 해보아야 하나 고민하다가 헤맸던 문제이다. 원의 방정식으로 접근하면 정말 간단하게 해결할 수 있다.
반지름에 대한 x의 값을 배수별로 고정하고 y의 개수를 배수별로 더해주면 된다.
코드 구현
function solution(k, d) {
var answer = 0;
for(let i=0; i<=d; i+=k){
let res = Math.sqrt(d**2-i**2);
answer += Math.floor(res/k)+1;
}
return answer;
}
문제
https://school.programmers.co.kr/learn/courses/30/lessons/181187
프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
문제 방향
이중 순회하면 시간초과가 나기에 일차원 순회만 해야한다. 이때 키 포인트는 한 좌표를 기준으로 다른 좌표의 개수를 더한뒤 +1해주는 것이다. 한 사분면만 구하면 되기 때문에 4곱해주면 답이다.
이때 주의할 점은 더 큰 원은 미만으로 해야하기 때문에 Math.floor, 더 작은 원은 초과로 해야하기 때문에 Math.ceil을 써줘야 한다.
코드 구현
function solution(r1, r2) {
var answer = 0;
for(let x =1; x<=r2; x++){
let y1 = Math.floor(Math.sqrt(Math.pow(r2, 2)- Math.pow(x, 2)));
let y2 = Math.ceil(Math.sqrt(Math.pow(r1, 2)- Math.pow(x, 2))) || 0;
answer += (y1-y2+1)* 4;
}
return answer;
}반응형
'PS > 프로그래머스' 카테고리의 다른 글
| [프로그래머스][분할정복] 표현 가능한 이진트리 (0) | 2025.10.22 |
|---|---|
| [프로그래머스][브루트포스] 수식 최대화 (0) | 2025.10.15 |
| [프로그래머스][그리디] 디펜스 게임 (0) | 2025.10.10 |
| [프로그래머스][bfs] 거리두기 확인하기 (0) | 2025.10.07 |
| [프로그래머스][브루트 포스] k진수에서 소수 개수 구하기 (0) | 2025.10.01 |