Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 알고리즘문제풀이
- 5강클로저
- JS스터디
- [pccp 기출문제]
- pccp기출문제
- 과제진행하기
- 최소스패닝트리
- solved.ac골드
- React.StrictMode
- 프로그래머스
- Lv3
- 지도 여러개
- div2개
- Lv2
- DP
- 코어자바스크립트
- 정렬
- 스택
- 백준알고리즘
- 이중지도
- 두원사이의정수쌍
- 타겟넘버
- 2023카카오블라인드코테
- 비트마스크
- 백준 알고리즘
- solved.ac플래티넘
- 우박수열정적분
- JS
- 알고리즘 문제풀이
- c++
Archives
- Today
- Total
호지
[프로그래머스] 두 원 사이의 정수 쌍 문제풀이 JS 본문
피타고라스 정의를 활용해서 문제룰 풀었다.
정수쌍은 해당 그래프를 0,0을 기준으로 4개로 나눴을 때,
한 부분의 정수쌍 개수를 구하고 4를 곱하면 된다.
x,y가 모두 양수일 때를 기준으로 정수쌍의 개수를 구하게 되면
x축을 기준으로 1부터 r2까지 순회하면서
x값이 정수일때 y의 값을 구한뒤, 해당 값의 소수점을 자르게 되면(Math.floor)
r2원 안에있는 정수의 개수를 구할 수 있고, (y2)
x값이 r1원 안에 있을 경우를 제외한 정수의 최소값을 알아야 하므로,
이때의 y값을 구한뒤, 소수점을 올리면(Math.ceil)
r1원 밖이나 경계에 해당하는 y의 최소값을 구할 수 있다.(y1)
x값이 r1원 밖이라면 정수의 최소값은 0이다.
*y값을 구할 때 Math.sqrt(r**2 - x**2)이 피타고라스 정리를 활용한 것임
따라서 y2와 y1사이의 개수를 count에 계속 더하면서 1부터 r2까지 순회를 끝내면
원하는 결과를 얻을 수 있다
function solution(r1, r2) {
let count = 0
for (let x = 1; x <= r2; x++) {
let y2 = Math.floor(Math.sqrt(r2 ** 2 - x ** 2))
let y1 = r1 > x ? Math.ceil(Math.sqrt(r1 ** 2 - x ** 2)) : 0
count += y2 - y1 + 1
}
return count * 4
}
https://school.programmers.co.kr/learn/courses/30/lessons/181187
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 과제 진행하기 문제풀이 JS (0) | 2023.08.28 |
---|---|
[프로그래머스] 연속된 부분 수열의 합 문제풀이 JS (0) | 2023.08.27 |
[프로그래머스] 직사각형 별찍기 문제풀이 JS (0) | 2023.08.11 |
[프로그래머스] 소수 만들기 문제풀이 JS (0) | 2023.08.11 |
[프로그래머스] 예산 문제풀이 JS (0) | 2023.08.11 |
Comments