[오늘의 문제] 점의 위치 구하기

shlim55·2025년 10월 8일

코딩테스트

목록 보기
145/223

출처: https://school.programmers.co.kr/learn/courses/30/lessons/120841?language=python3

문제 설명
사분면은 한 평면을 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이 아닙니다.
입출력 예
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 합니다.

내가 작성한 코드문

def solution(dot):
    answer = 0
    
    if dot[0] > 0 and dot[1] > 0:
        return 1
    
    if dot[0] < 0 and dot[1] > 0:
        return 2
    
    if dot[0] < 0 and dot[1] < 0:
        return 3
    
    if dot[0] > 0 and dot[1] < 0:
        return 4

다른 사람의 풀이

def solution(dot):
    quad = [(3,2),(4,1)]
    return quad[dot[0] > 0][dot[1] > 0]
quad = [
    # dot[0] > 0 이 False (x < 0, 즉 0) 일 때
    (3, 2), # -> [False (y < 0, 즉 0)], [True (y > 0, 즉 1)]
    # dot[0] > 0 이 True (x > 0, 즉 1) 일 때
    (4, 1)  # -> [False (y < 0, 즉 0)], [True (y > 0, 즉 1)]
]

return quad[dot[0] > 0][dot[1] > 0] 는 다음 순서로 작동한다.

예시 1: dot = (2, 5) (제 1 사분면)
dot[0] > 0 → 2>0 → True (1)

dot[1] > 0 → 5>0 → True (1)

결과: quad[1][1] → (4, 1)[1] → 1

예시 2: dot = (-3, 6) (제 2 사분면)
dot[0] > 0 → −3>0 → False (0)

dot[1] > 0 → 6>0 → True (1)

결과: quad[0][1] → (3, 2)[1] → 2

예시 3: dot = (-4, -2) (제 3 사분면)
dot[0] > 0 → −4>0 → False (0)

dot[1] > 0 → −2>0 → False (0)

결과: quad[0][0] → (3, 2)[0] → 3

def solution(dot):
    x,y = dot
    if x*y>0:
        return 1 if x>0 else 3
    else:
        return 4 if x>0 else 2
  1. x와 y의 부호가 같은가? (1사분면 또는 3사분면)

    만약 x>0 이면 (y도 양수라는 의미) → 1 (제 1 사분면) 반환.

    그렇지 않다면 x<0 이고 (y도 음수라는 의미) → 3 (제 3 사분면) 반환.

  2. x와 y의 부호가 다른가? (2사분면 또는 4사분면)
    else: x * y > 0 조건에 해당하지 않는 경우입니다. 즉, 두 좌표의 곱이 음수(−)라는 의미이고, 이는 두 좌표의 부호가 서로 다르다는 뜻이다.

profile
A Normal Programmer

0개의 댓글