RIEN😚
이상한 나라의 개발자
RIEN😚
전체 방문자
오늘
어제
  • 분류 전체보기 (125)
    • Algorithm (68)
      • 알고리즘 (0)
      • Baekjoon (8)
      • 프로그래머스 (55)
      • HackerRank (5)
    • Android (30)
      • Project (1)
      • Error (2)
      • Studio (1)
      • Android (26)
    • Kotlin (6)
    • CS (4)
      • 네트워크 (2)
      • 데이터베이스 (2)
    • Front End (5)
      • React (1)
      • VUE (3)
      • Project (0)
      • 기타 (1)
    • 기록 (11)
      • 회고록 (6)
      • TIL (5)

블로그 메뉴

  • Github🔥
  • 포트폴리오🌹

공지사항

인기 글

티스토리

250x250
반응형
hELLO · Designed By 정상우.
RIEN😚
Algorithm/프로그래머스

[Lv.2] 점 찍기 - python

Algorithm/프로그래머스

[Lv.2] 점 찍기 - python

2022. 12. 14. 23:35
728x90
반응형
 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

문제설명

좌표평면을 좋아하는 진수는 x축과 y축이 직교하는 2차원 좌표평면에 점을 찍으면서 놀고 있습니다. 두 양의 정수 k, d가 주어질 때 다음과 같이 점을 찍으려 합니다.

  • 원점 (0,0)으로부터 x축 방향으로 a*k(a=0,1,2,3,…), y축 방향으로 b*k(b=0,1,2,3,…)만큼 떨어진 위치에 점을 찍습니다.
  • 원점과 거리가 d를 넘는 위치에는 점을 찍지 않습니다.

정수 k와 원점과의 거리를 나타내는 정수 d가 주어졌을 때, 점이 총 몇 개 찍히는지 return하는 solution함수를 완성하세요.

 

제한사항

  • 1 ≤ k ≤ 1,000,000
  • 1 ≤ d ≤ 1,000,000

 

풀이

🔥 피타고라스의 정리를 이용하면 쉽게 풀 수 있는 문제입니다.

위의 이미지에서 알 수 있듯이 d와 x만 알면 y의 범위를 알 수 있고, x는 for문을 이용해 점차 증가시킬 수 있습니다.

이때! 주의해야할 점은 (x,y)의 x와 y는 k의 배수만 가능하다는 점입니다.

이렇게 위의 이미지와 피타고라스를 이용해 각 x에서의 y의 범위는 아래처럼 구할 수 있습니다.

n,m = int(d/k),d**2
for i in range(k,d,k):
	# y**2 = d**2 - i**2
    height = int(sqrt(m-i**2))
    answer += int(height / k)

 

코드

from math import sqrt
def solution(k, d):
    answer = 0
    n,m = int(d/k),d**2
    for i in range(k,d,k):
        height = int(sqrt(m-i**2))
        answer += int(height / k)
    return answer + 2*n + 1
반응형

'Algorithm > 프로그래머스' 카테고리의 다른 글

[Lv.2] 이모티콘 할인행사  (0) 2023.01.27
[Lv.1] 개인정보 수집 유효기간 - python & Kotlin  (0) 2023.01.24
[Lv3] 가장 긴 팰린드롬 - python  (0) 2022.09.29
[Lv3] 단어 변환 - python  (1) 2022.09.29
[Lv3] 섬 연결하기 - python, kotlin  (2) 2022.09.29
  • 문제설명
  • 제한사항
  • 풀이
  • 코드
'Algorithm/프로그래머스' 카테고리의 다른 글
  • [Lv.2] 이모티콘 할인행사
  • [Lv.1] 개인정보 수집 유효기간 - python & Kotlin
  • [Lv3] 가장 긴 팰린드롬 - python
  • [Lv3] 단어 변환 - python
RIEN😚
RIEN😚
안드로이드 / 코틀린 독학으로 취업하자!

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.