본문 바로가기

코딩테스트 문제

[프로그래머스] 점 찍기

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

 

[프로그래머스] 점 찍기 (Java)

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

maicoding.tistory.com

참고 블로그 올립니다.. 이 분 정말 똑똑하신 것 같아요