점의 위치 구하기
https://school.programmers.co.kr/learn/courses/30/lessons/120841
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
1) 문제
사분면은 아래와 같이 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 함수를 완성해주세요.
dot의 길이 = 2
dot[0]은 x좌표를, dot[1]은 y좌표를 나타냅니다
-500 ≤ dot의 원소 ≤ 500
dot의 원소는 0이 아닙니다.
2) 예시
dot | result |
---|---|
[2, 4] | 1 |
[-7, 9] | 2 |
입출력 예 #1
dot이 [2, 4]로 x 좌표와 y 좌표 모두 양수이므로 제 1 사분면에 속합니다. 따라서 1을 return 합니다.
입출력 예 #2
dot이 [-7, 9]로 x 좌표가 음수, y 좌표가 양수이므로 제 2 사분면에 속합니다. 따라서 2를 return 합니다.
3) 풀이
1. 클래스 선언을 해줍니다
● class Solution {
클래스명은 대문자로 시작해야하고, 정답이라는 의미로 Solution이라는 단어를 사용하였습니다.
2. 메소드 선언을 해줍니다.
● public int solution(int[] dot) {
정수배열 dot을 매개변수로 사용하는 solution 메소드를 선언해줍니다.
메소드의 결과값인 solution은 정수이 나오므로, 데이터 타입을 int로 해줍니다.
3. ?사분면에 위치한 답을 answer로 선언하고 0으로 초기화합니다.
dot[0]은 x좌표를 의미하므로 변수 x에,
dot[1]은 y좌표를 의미하므로 변수 y에 할당합니다.
그리고 제한사항을 확인하고, 제한사항을 만족하지 않는다면 예외처리합니다.
● int answer = 0;
int x = dot[0];
int y = dot[1];
if(x < -500 || x > 500 || x == 0 || y < -500 || y > 500 || y == 0){
throw new IllegalArgumentException("제한사항을 확인하세요");
}
4. 조건문 if를 활용하고, else if를 이용하여 1번 조건문을 만족하지 않을 경우, 2번 조건문, 3번 조건문, 4번 조건문까지 진행되도록합니다. 문제에 맞게, x가 양일때, 음일때, y가 양일때, 음일때에 맞게 값을 주고,
최종적인 answer를 반환해줍니다.
● if(x > 0 && y >0){
answer = 1;
} else if (x > 0 && y < 0){
answer = 4;
} else if(x < 0 && y > 0){
answer = 2;
} else if (x < 0 && y < 0){
answer = 3;
}
return answer;
}
}
※ else if란
else if는 else 뒤에 오는 조건이 true일 때만 실행되는 구문입니다.
여러 개의 조건을 순차적으로 검사하고자 할 때 사용됩니다.
if (condition1) {
// condition1이 true일 때 실행되는 코드
} else if (condition2) {
// condition1이 false이고 condition2가 true일 때 실행되는 코드
} else if (condition3) {
// condition1과 condition2가 false이고 condition3이 true일 때 실행되는 코드
} else {
// 모든 조건이 false일 때 실행되는 코드
}
4) 코드
class Solution {
public int solution(int[] dot) {
int answer = 0;
int x = dot[0];
int y = dot[1];
if(x < -500 || x > 500 || x == 0 || y < -500 || y > 500 || y == 0){
throw new IllegalArgumentException("제한사항을 확인하세요");
}
if(x > 0 && y >0){
answer = 1;
} else if (x > 0 && y < 0){
answer = 4;
} else if(x < 0 && y > 0){
answer = 2;
} else if (x < 0 && y < 0){
answer = 3;
}
return answer;
}
}
'Programmers Coding Test > Java' 카테고리의 다른 글
[프로그래머스 120818] Java - 코딩테스트 입문 / 옷가게 할인 받기 (2) | 2024.01.31 |
---|---|
[프로그래머스 120815] Java - 코딩테스트 입문 / 피자 나눠 먹기 (2) (0) | 2024.01.31 |
[프로그래머스 120830] Java - 코딩테스트 입문 / 양꼬치 (0) | 2024.01.31 |
[프로그래머스 120816] Java - 코딩테스트 입문 / 피자 나눠 먹기 (3) (1) | 2024.01.31 |
[프로그래머스 120814] Java - 코딩테스트 입문 / 피자 나눠 먹기 (1) (0) | 2024.01.30 |