Notice
Recent Posts
Recent Comments
Link
250x250
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- cs #네트워크
- App Runner
- 프로세스
- 해시
- 웅진씽크빅
- React.js
- 알고리즘
- 프로젝트캠프
- 프로그래머스
- react
- Algorithm
- react-query
- 자바스크립트
- javascript
- 리액트
- 타입스크립트
- 스레드
- #프로젝트캠프 #프로젝트캠프후기 #유데미 #스나이퍼팩토리 #웅진씽크빅 #인사이드아웃 #IT개발캠프 #개발자부트캠프 #리액트 #react #부트캠프 #리액트캠프
- IT개발캠프
- 개발자부트캠프
- 스나이퍼팩토리
- ip
- 인사이드아웃
- 네트워크
- 유데미
- html
- typescript
- 메모리
- CS
- BFS
Archives
- Today
- Total
Bin's Blog
[프로그래머스] Level2 - 두 원 사이의 정수 쌍(Javascript) 본문
728x90
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
📝문제 요약
1️⃣ X축과 Y축으로 이루어진 2차원 직교 좌표계에 중심이 원점인 서로 다른 크기의 원의 두 개 주어진다. 반지름을 나타내는 두 정수 r1, r2가 매개변수로 주어진다.
2️⃣ 두 원 사이의 공간에 X좌표와 Y좌표가 모두 정수인 점의 개수를 return 하도록 solution 함수를 완성해라.
📚중요 포인트
1️⃣ 핵심은 작은 원과 큰 원 사이의 정수인 지점을 구해야 한다.
2️⃣ 작은 원의 경계선에 있는 점을 세면, 그 점은 큰 원과의 공간에는 포함되지 않는다. 따라서 작은 원의 경계선에 있는 점들을 계산에서 제외한다.
3️⃣ 원의 방정식을 활용한다. (루트(x -a) ** 2 + (y - b) ** 2)
✅ 성공 코드
function solution(r1, r2) {
let answer = 0;
// 원점에서
for (let i = 0; i < r1; i++) {
// 실수로 계산된 정수 부분만 추출하기 위해 parseInt 사용
// 원의 방정식 활용
// 각 좌표 x에 대해 큰 원(r2),작은 원(r1)의 방정식을 사용하여 큰 원과 작은 원에 속하는 y좌표의 최댓값을 찾는다.
answer += parseInt(Math.sqrt(r2 ** 2 - i ** 2)) - parseInt(Math.sqrt(r1 ** 2 - i ** 2 -1));
}
// 이 구간에는 작은 원(r1) 안에 격자점이 없기 때문에, 큰 원(r2)의 방정식을 사용해서 y값의 최대 정수 부분을 계산한다
for (let j = r1; j < r2; j++) {
answer += parseInt(Math.sqrt(r2** 2 - j ** 2));
}
// 원의 한 사분면만 계산했기 때문에 전체 격자의 수를 얻기 위해 4를 곱한다.
return answer * 4;
}
📔느낀점
👉 수학 관련 문제를 풀다보면 수학 공부가 너무 하고 싶어진다.. 수학적 지식을 요구하는 문제가 등장하면 더욱 그렇다.
728x90
'Algorithm' 카테고리의 다른 글
[프로그래머스] Level2 - 과제 진행하기(Javascript) (0) | 2023.11.15 |
---|---|
[프로그래머스] Level2 - 우박수열 정적분(Javascript) (0) | 2023.11.03 |
[프로그래머스] Level2 - 디펜스 게임(Javascript) (0) | 2023.11.02 |
[프로그래머스] Level2 - 리코쳇 로봇(Javascript) (0) | 2023.10.30 |
[프로그래머스] Level3 - 베스트앨범(Javascript) (0) | 2023.09.14 |