티스토리 뷰

코딩테스트

Lv.0 Swift 점의 위치 구하기

알롱도담쓰 2024. 3. 18. 15:47

문제 설명

사분면은 한 평면을 x축과 y축을 기준으로 나눈 네 부분입니다. 사분면은 아래와 같이 1부터 4까지 번호를매깁니다.
스크린샷 2022-07-07 오후 3.27.04 복사본.png

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이 아닙니다.

 

내 답안

func solution(_ dot:[Int]) -> Int {
    let x = dot[0]
    let 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
    }
}

 

접근 방법

0 이상이면 음수, 0 이하면 양수라고 판단해서 진행

 

다른 풀이

func solution(_ dot:[Int]) -> Int {
    let x = dot[0]
    let y = dot[1]

    if x > 0 {
        return y > 0 ? 1 : 4
    } else {
        return y > 0 ? 2 : 3
    }
}

 

if 문을 조금 더 간단하게 쓸 수도 있었다

if 문 안에 삼항여산자를 쓸 수도 있었다

문제 풀어 보고 한 번 더 코드를 재정리해볼 것

 

func solution(_ dot:[Int]) -> Int {
    switch (dot[0], dot[1]) {
    case (0..., 0...): return 1
    case (...0, 0...): return 2
    case (...0, ...0): return 3
    case (0..., ...0): return 4
    default: return 0
    }
}

 

스위치 문으로도 풀어보고 싶었지만 생각이 안 났는데 이런 풀이 방식도 있었다 

알게 된 것

'코딩테스트' 카테고리의 다른 글

Lv.0 Swift 문자 반복 출력하기  (0) 2024.03.18
Lv.0 swift 자릿수 더하기  (0) 2024.03.18
Lv.0 swift 세균 증식  (0) 2024.03.17
Lv.0 swift 짝수의 합  (0) 2024.03.17
Lv.0 Swift 각도기  (0) 2024.03.17
최근에 올라온 글