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 |
Tags
- 오브젝트 풀링
- 백준 1103번 게임
- Beakjoon
- 코테
- 수학숙제
- 백준 17070번 c++
- Unity
- 2870번 c++
- 플레이어 이동
- 17070번
- Lv2
- 백준 1103번 c++
- 백준 c++ 2870번
- 백준 17070번
- 코딩테스트
- 프로그래머스
- c++
- 유니티
- C#
- dfs
- 백준 c++ 2468번
- 2870번
- 2870번 수학숙제 c++
- Algorithm
- 백준 1103번
- 백준 2870번
- 2468 c++
- 백준
- Lv.3
- 2870번 수학숙제
Archives
- Today
- Total
주녘공부일지
[프로그래머스 C#] Lv.2 점 찍기 본문
https://school.programmers.co.kr/learn/courses/30/lessons/140107#
1. 정답코드 및 핵심 아이디어, 유의사항
x 좌표를 0부터 k씩 더해가며 x 값에 따른 y 값의 최대를 구해 가질 수 있는 y 값의 개수를 구하면 되는 문제- 사실 문제 자체는 굉장히 쉬운데 함정이 숨어있음 -> int형의 크기를 벗어날 수 있음
int d = 1000000;
long dd = d * d; // int형으로 연산되기 때문에 크기 범위를 벗어남
Console.Write(dd); // -727379968 출력
dd = (long)d * (long)d; // 올바른 결과
Console.Write(dd); // 1000000000000 출력 (올바른 결과)
dd = (long)Math.Pow(d, 2); // 올바른 결과
Console.Write(dd);// 1000000000000 출력
주석 참조
using System;
public class Solution
{
public long solution(int k, int d)
{
long answer = 0; // 원점을 포함한 상태로 시작
long dd = (long)Math.Pow(d, 2);
long xx;
// x 좌표 값을 기준으로 해당하는 값에 따라 가질 수 있는 y의 개수를 구함
for (int x = 0; x <= d; x += k)
{
xx = (long)Math.Pow(x, 2);
int maxY = (int)Math.Sqrt(dd - xx); // x좌표에 따른 y가 가질 수 있는 최대 값
answer += (maxY / k) + 1;
}
return answer;
}
}
'CodingTest > Programmers Lv.2' 카테고리의 다른 글
[프로그래머스 C#] Lv.2 점프와 순간 이동 (1) | 2023.12.07 |
---|---|
[프로그래머스 C#] Lv.2 H-Index (1) | 2023.12.06 |
[프로그래머스 C#] Lv.2 행렬의 곱셈 (1) | 2023.12.05 |
[프로그래머스 C#] Lv.2 최댓값과 최솟값 (1) | 2023.12.05 |
[프로그래머스 C#] Lv.2 다음 큰 숫자 (1) | 2023.12.05 |