peacekim
할 수 있는 것과 할 수 없는 것.
peacekim
전체 방문자
오늘
어제
  • 분류 전체보기 (68)
    • 👨‍🏫ps (44)
      • ❄️프로그래머스 (20)
      • 🔟0️⃣백준 (21)
      • leetcode (3)
    • ✍🏻study (20)
      • 👐java (6)
      • 🍃spring (1)
      • 🥇algorithm (0)
      • 🚘oodp (4)
      • 📒 jpa (3)
      • 👣DB (2)
      • 🌂네트워크 (0)
      • 🎸기타 (3)
      • 👊 kotlin (1)
      • 🫥 jvm (0)
    • 📽project (4)
      • 🎀ReBoN (4)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

인기 글

최근 글

티스토리

hELLO · Designed By 정상우.
peacekim

할 수 있는 것과 할 수 없는 것.

[프로그래머스] 점 찍기 [python]
👨‍🏫ps/❄️프로그래머스

[프로그래머스] 점 찍기 [python]

2023. 4. 24. 22:46
반응형

문제

처음에 감이 안잡혀서, 힌트를 보았다,,,

원 안에 있는 점을 구하는 건데, 점은 k의 배수 또는 0 이어야 한다는 제약 조건이 있다.

x^2 + y^2 <= d^2 의 점 중에 위 제약 조건에 맞는 것을 구하면 된다.

처음에 가능한 모든 점을 구했다. k의 배수이고, 제곱이 d의 제곱 보다 작은 점들을 구했다.

그리고 한쪽은 가장 작은 곳 부터, 다른 한쪽은 가장 큰 쪽부터 두 수의 제곱이 d의 제곱보다 작은지 구했고,

크다면, (오른쪽의 값 -1)

작다면, (오른쪽의 값+1)을 answer에 더한후, (왼쪽 값+ 1) 해줬다.

왼쪽 기준으로 possibleDot에 있는 값 중 가장 큰 값을 구했기 때문에, 무조건 다음 값은 해당 값보다 작기 때문에, 위 같이 풀 수 있었다.

코드

def solution(k, d):
    answer = 0
    possibleDot = []
    i = 0
    while (i * k) * (i * k) <= d*d:
        possibleDot.append(i*k)
        i += 1
    i = len(possibleDot) - 1
    j = 0
    
    while j < len(possibleDot):
        if possibleDot[j] * possibleDot[j] + possibleDot[i] * possibleDot[i] > d*d:
            i -= 1
        else:
            answer += (i + 1)
            j += 1
    return answer
"""
두 양의 정수 k, d가 주어질 때 
x축: a*k, y축: b*k 만큼 떨어진 위치에 점을 찍는다
원점과 거리가 d를 넘는 위치에는 점을 찍지 않는다.
완점 탐색하면 안됨
"""
반응형

'👨‍🏫ps > ❄️프로그래머스' 카테고리의 다른 글

[프로그래머스] 후보키 [python]  (0) 2023.05.02
[프로그래머스] 문자열 압축 [python]  (0) 2023.04.29
[프로그래머스] 숫자 카드 나누기 [python]  (0) 2023.04.22
[프로그래머스] 무인도 여행 [python]  (0) 2023.04.02
[프로그래머스] 거리두기 확인하기 [python]  (0) 2023.03.29
    '👨‍🏫ps/❄️프로그래머스' 카테고리의 다른 글
    • [프로그래머스] 후보키 [python]
    • [프로그래머스] 문자열 압축 [python]
    • [프로그래머스] 숫자 카드 나누기 [python]
    • [프로그래머스] 무인도 여행 [python]
    peacekim
    peacekim
    할 수 있는 것과 할 수 없는 것. github: https://github.com/PyeongGangKim

    티스토리툴바