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 |
Tags
- 미친 아두이노
- 8972
- dl
- 자율주행자동차
- 코딩테스트
- and
- NOR
- BFS
- 단어 변환
- dfs
- or
- 큐빙
- Perceptron
- 파이썬
- BOJ
- 프로그래머스
- Simulation
- 삼성
- 구현
- nand
- Coding Test
- ML
- 5373
- logic gate
- XOR
- 골드3
- 시뮬레이션
- python
- 백준
- Codetree
Archives
- Today
- Total
thkyang324
[프로그래머스] 두 원 사이의 정수 쌍 (Python 파이썬) 본문
두 원 사이의 정수 쌍
수학, 레벨2
https://school.programmers.co.kr/learn/courses/30/lessons/181187
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
먼저 원의 방정식 공식을 활용하여 x와 r이 주어졌을 때 y좌표를 계산하는 함수를 f라는 이름으로 만든다.
f = lambda x, r : (r**2-x**2)**0.5
원에 속하는 점의 수를 단순 수학적 계산을 통해 구할 수 있다. x**2 + y**2 = r**2 이므로, 어떠한 x에 대하여 원에 해당하는 점의 수는 int((r**2-x**2)**0.5)이다. 0사분면만 구한 후 4배하고 x, y축 위에 있는 점의 수를 더하면 된다. 이를 calc_dots 함수로 구현했다.
def calc_dots(r):
return sum([int(f(x,r)) for x in range(1, r)])*4+4*r+1
원 위에 있는 점 또한 비슷한 방식으로 구할 수 있다. int((r**2-x**2)**0.5)를 y'라고 할 때, x**2 + y'**2 = r**2 를 만족하면 해당 위치는 원 위에 존재한다. 이를 calc_dots_in_grid 함수로 구현했다.
def calc_dots_in_grid(r):
return sum([int(f(x,r))**2 + x**2 == r**2 for x in range(1, r)])*4 + 4
마지막으로, 두 원 사이에 있는 점은 r2위에 있는 점 - r1위에 있는 점 + r1 테두리 위에 있는 점으로 구할 수 있다.
def solution(r1, r2):
return calc_dots(r2)-calc_dots(r1) + calc_dots_in_grid(r1)
최종 제출한 코드는 다음과 같다.
f = lambda x, r : (r**2-x**2)**0.5
def calc_dots(r):
return sum([int(f(x,r)) for x in range(1, r)])*4+4*r+1
def calc_dots_in_grid(r):
return sum([int(f(x,r))**2 + x**2 == r**2 for x in range(1, r)])*4 + 4
def solution(r1, r2):
return calc_dots(r2)-calc_dots(r1) + calc_dots_in_grid(r1)
'코딩테스트' 카테고리의 다른 글
[프로그래머스] 불량 사용자 (Python 파이썬) (0) | 2023.04.15 |
---|---|
[프로그래머스] 괄호 변환 (Python 파이썬) (0) | 2023.04.15 |
[프로그래머스] 요격 시스템 (Python 파이썬) (0) | 2023.04.15 |
[백준 BOJ 8972] 미친 아두이노 (Python 파이썬) (0) | 2023.03.27 |
[백준 BOJ 5373] 큐빙 (Python 파이썬) (0) | 2023.03.24 |
Comments