코드 그라데이션

[Lv.0] 점의 위치 구하기 본문

Java/알고리즘

[Lv.0] 점의 위치 구하기

완벽한 장면 2023. 6. 7. 03:11

https://school.programmers.co.kr/learn/courses/30/lessons/120841

 

프로그래머스

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

programmers.co.kr

 

문제 설명

사분면은 한 평면을 x축과 y축을 기준으로 나눈 네 부분입니다. 사분면은 아래와 같이 1부터 4까지 번호를 매깁니다.

 

  • x 좌표와 y 좌표가 모두 양수이면 제1사분면에 속합니다.
  • x 좌표가 음수, y 좌표가 양수이면 제2사분면에 속합니다.
  • x 좌표와 y 좌표가 모두 음수이면 제3사분면에 속합니다.
  • x 좌표가 양수, y 좌표가 음수이면 제4사분면에 속합니다.

x 좌표 (x, y)를 차례대로 담은 정수 배열 dot이 매개변수로 주어집니다. 

좌표 dot이 사분면 중 어디에 속하는지 1, 2, 3, 4 중 하나를 return 하도록 solution 함수를 완성해주세요.

 

제한 사항

 

입출력 예

 

입출력 예 설명

 

아이디어

  • 길이는 2로 제한사항에서 변하지 않으니까, x는 1번에 있고 y는 2번에 있다고 가정하고 가도 무방.
  • 네 개의 사분면 분기

 

나의 답안

class Solution {
    public int solution(int[] dot) {
        int x = dot[0];
        int y = dot[1];
        
        if(x>0&&y>0) {
            return 1;
        }
        else if(x<0&&y>0) {
            return 2;
        }
        else if(x<0&&y<0) {
            return 3;
        }
        else {
            return 4;
        }
    }
}

 

cf) 만약 단일 if나 마지막을 else if 로 묶는다면?

// 요기 에 도달할 수 있다고 컴파일러가 판단하므로 에러를 낸다.

class Solution {
    public int solution(int[] dot) {
        int x = dot[0];
        int y = dot[1];
        
        if(x>0&&y>0) {
            return 1;
        }
        else if(x<0&&y>0) {
            return 2;
        }
        else if(x<0&&y<0) {
            return 3;
        }
        else  if {
            return 4;
        }
        // 요기
    }
}

 

그런데 지금은 else 까지 해서 꽁꽁 싸맸기 때문에 모든 경우의 수를 다 충족한다.

 

728x90
Comments