문제
사분면은 한 평면을 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 함수를 완성해주세요.
https://school.programmers.co.kr/learn/courses/30/lessons/120841
풀이
1. 접근
1.1 관찰
음수 양수를 판단해 해당하는 정수를 반환하는 문제
입력 : 배열(정수)
출력 : 정수
1.2 계획
when문으로 4가지 조건을 걸어야겠다.
조건걸기 : 0을 기준으로 음수 양수 확인하기
answer에 담기 : 일치하는 정수값을 담기
2. 시행착오
2.1 시도
class Solution {
fun solution(dot: IntArray): Int {
var answer = 0
when(true) {
dot[0] > 0 && dot[1] > 0 -> answer = 1
dot[0] < 0 && dot[1] > 0 -> answer = 2
dot[0] < 0 && dot[1] < 0 -> answer = 3
dot[0] > 0 && dot[1] < 0 -> answer = 4
}
return answer
}
}
검증결과 : 성공
when문은 else를 넣어주면 한줄 표현식이 된다고 배웠으니 줄여봤다.
class Solution {
fun solution(dot: IntArray) =
when(true) {
dot[0] > 0 && dot[1] > 0 -> 1
dot[0] < 0 && dot[1] > 0 -> 2
dot[0] < 0 && dot[1] < 0 -> 3
dot[0] > 0 && dot[1] < 0 -> 4
else -> 0
}
}
회고
문제에 그림이 첨부되어있고 양도 많아져서 어려울 것 같았는데 막상 풀이는 쉬웠다. 지레 겁먹지 말 것.
어제 책에서 배운 내용을 적용해 볼 기회여서 좋았고 아는만큼 개선될 수 있다는 걸 경험해보며 다시금 배움의 중요성을 느꼈다. 혹시 음수 양수를 판단해주는 메소드도 있을까 찾아봤는데 절댓값으로 만들어주는 메소드만 나오고 딱히 없는 것 같다. 혹시 모르니 적어두겠다. math.abs() 단 이 메소드는 외부 클래스이므로 import해줘야 한다.
'코틀린 > 코딩테스트' 카테고리의 다른 글
코딩테스트 [배열의 유사도] (0) | 2024.06.25 |
---|---|
코딩테스트 [최댓값 만들기(1)] (0) | 2024.06.25 |
코딩테스트 [모음 제거] (0) | 2024.06.24 |
코딩테스트 [편지] (0) | 2024.06.24 |
코딩테스트 [배열 자르기] (1) | 2024.06.21 |