1. 문제(https://school.programmers.co.kr/learn/courses/30/lessons/140107)
2. 풀이 과정
처음에 x,y와의 직선거리만을 생각해서 틀리고,,,, 문제를 읽다가 피타고라스 법칙을 생각했다. 오랜만에 코딩해서 그런지 머리가 잘 안돌아감.. 메모장에 하나하나 이중for문 돌려보며 했다 ㅎㅎ
걍 뭐든 하면 될 거라는 "믿 음"
3. 구현 코드
class Solution {
public long solution(int k, int d) {
long answer = 0;
long x = 0, y = 0;
for(int i = 0; i <= d; i++){
for(int j =0; j <= d; j++){
x = i*k;
y = j*k;
if(x>d || y>d || Math.pow(x,2)+Math.pow(y,2)>Math.pow(d,2))
break;
answer++;
}
}
return answer;
}
}
이중 for문을 이용해 구현했다. 알고리즘, 자료구조 생각하지 않고 구현해서 시간 복잡도에서 걸렸다. 아주 시간이 많이 걸리는 코드라는 것. 그래서 틀렸다.. 그리고 자바 함수도 다 까먹고 제곱근 함수 구글링했느네... Math.sqrt를 왜 안썼니.
Math.sqrt(i * i + j * j) 이거하면 될걸 더 길게 해버렸다.
4. 채점 결과
기본 입출력을 구현할 때와는 다른 처참한 결과
5. 회고
알고리즘과 자료구조를 생각 하지 못 했다. 이론만 배웠지 실무적 코드에 적용하는 방법은 몰랐기 때문! 다른 분들의 블로그를 드나들면서 내 문제점을 파악했다. 이중for문 써서 시간초과가 됐다.. 다른 사람들은 한 번만 썼더라고? 그래서 코드를 다 보며 어떻게 했는지 봤다.. 증감식도 i+=k 를 쓰면 됐다. 근데 모르겠다......사실 모르겠어 왜 그렇게 되는지 y/k는 왜 하는 것인가..
최종은 이렇게 햇는데 걍 다른 분 블로그 보고 쓴거다.......처음에 매개변수 int로 하고 for문 i도 int로했더니 18점 맞았다 왜지??????? 왜인지를 찾아야하는데 그래야 내 실력향상이다 내일 찾아보마 아자아자 화이자~!!
+)https://maicoding.tistory.com/79
참고 블로그 올립니다.. 이 분 정말 똑똑하신 것 같아요
'코딩테스트 문제' 카테고리의 다른 글
[코테스터디]백준 11728 : 배열합치기 | two pointer (0) | 2024.08.06 |
---|---|
[SWEA] D2 | 달팽이문제 (JAVA) (0) | 2024.05.19 |
[SWEA] D2 | 백만장자 (JAVA) (0) | 2024.05.18 |
[백준]1940 주몽(투포인터 응용문제) (2) | 2024.05.15 |
[백준]2018_투포인터 (0) | 2024.05.15 |