프로그래머스_LV.0_점의 위치 구하기

Dreamer ·2022년 12월 6일
0

코딩테스트 준비

목록 보기
19/93

1. quiz

  • 사분면은 한 평면을 x축과 y축을 기준으로 나눈 네 부분입니다. 사분면은 아래와 같이 1부터 4까지 번호를매깁니다.

2. answer

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

3. 다른 사람의 풀이

def solution(dot):
    a, b = 1, 0
    if dot[0]*dot[1] > 0:
        b = 1
    if dot[1] < 0:
        a = 2
    return 2*a-b
def solution(dot):
    quad = [(3,2),(4,1)]
    return quad[dot[0] > 0][dot[1] > 0]
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
  • 이런 생각을 할 수 있다니... 정말 난 간단히 if, elif, else로 나눠서 했는데, 저런 생각을 할 수 있다니 놀랍다.

  • 맨 처음 코드의 경우 어떻게 저런 생각을 할 수 있는지 궁금하다.

  • 두 번째 코드의 경우, 만약, dot[0]과 dot[1]이 모두 0보다 큰 양수라면, quad[1][1] -> 1이 출력되고, dot[0]은 양수, dot[1]은 음수라면, quad[1][0] -> 4가 출력된다.

  • 세 가지 모두 코드 모두, 우선 첫 번째 조건으로 dot[0] * dot[1]이 양수인지 음수인지 따라서 return값이 나눠질 수 있도록 하였다. 즉, 세세하게 하나하나 if, elif 로 나누지 말고 큰 조건으로 우선 2그룹으로 나누고, 그 안에서 두 가지 답으로 나누는 방식이다.

profile
To be a changer who can overturn world

0개의 댓글