코틀린/코딩테스트

코딩테스트 [점의 위치 구하기]

정혜현 2024. 6. 25. 09:19

문제

사분면은 한 평면을 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