-
[Programmers] 점 찍기 / ❌Algorithm/Programmers 2024. 10. 5. 18:13
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
1. 제출 코드 (1시간 12분 28초 / 구현)
import java.util.*; class Solution { public long solution(int k, int d) { long answer = 0; for(int i = 0; i <= d; i += k) { answer += getCnt(getY(i, d), k); } return answer; } public static int getY(int x, int d) { return (int) Math.sqrt(Math.pow(d, 2) - Math.pow(x, 2)); } public static int getCnt(int y, int k) { return (y / k) + 1; } }
2. 구현 로직
- X를 K만큼 증가시키면서 주어진 D값과 피타고라스 정리를 이용해서 Y값을 구해보려고 한다.
- getY함수에 X와 D 값을 넣게 되면 Y값이 구해지게 되는데 Y는 D거리 안에서 최대 값이다.
- 이 값을 getCnt에 넣어서 K로 나누고 + 1을 하면 Y값내에 모든 Y좌표 개수를 구할 수 있다.
3. 유의할 점
- 피타고라스 정리는 전혀 생각하지 못해서 수학적인 측면에서도 문제를 풀 때 고려해야 할 거 같다.
'Algorithm > Programmers' 카테고리의 다른 글
[Programmers] 우박수열 정적분 / ⭕ (0) 2024.10.06 [Programmers] 숫자 카드 나누기 / ⭕ (0) 2024.10.05 [Programmers] 디펜스 게임 / ❌ (0) 2024.10.05 [Programmers] 테이블 해시 함수 / ⭕ (0) 2024.10.04 [Programmers] 연속 부분 수열 합의 개수 / ⭕ (0) 2024.10.03