코밍이의 하루

[Lv0] 각도기(Python) 본문

알고리즘/프로그래머스

[Lv0] 각도기(Python)

코밍이 2023. 2. 17. 14:28

문제 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/120829

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

[나의 풀이]

def solution(angle):
	if angle < 90:
        return 1
    elif angle == 90:
        return 2
    elif angle == 180:
        return 4
    else:
        return 3

1. 사용한 개념

1) if , elif, else 조건문

2) 비교 연산자

 

2. 풀이 후기

- 각도에 따라 예각, 직각, 둔각, 평각을 구분하는 문제였다. 레벨이 0인 이유는 각도가 1개만 주어져서 1개에 대한 처리만 진행하면 되서 조건문으로도 풀 수 있기 때문에 0을 준 것 같다. 예각은 90도 미만, 직각은 90도, 둔각은 90도 초과하면서 180 미만, 평각은 180도인 특징을 생각하며 조건문을 작성했다. 둔각을 else로 처리한 이유는 angle > 90 and angle < 180을 조건을 주어야 하는데 지금 angle == 180은 비교 식이 1개 있는데 angle > 90 and angle < 180는 비교 식이 2개 있기 때문에 더 빠른 처리를 생각하여 둔각을 else 처리하였다.

 

- 추가로 다른 사람의 풀이를 보며 정말 흥미로운 풀이법을 보았는데 아래와 같다.

def solution(angle):
	return (angle // 90) * 2 + (angle % 90 > 0) * 1

- 직접 대입하면서 확인해본 결과 각에 매겨진 숫자와 범위를 이용해서 푼 것이다.

- (angle // 90) * 2 의 경우는 예각은 0, 직각,둔각은 2, 평각은 4가 나오게 한다.

- (angle % 90 > 0) * 1 의 경우는 예각,둔각은 1, 직각,평각은 0이 나오게 한다.

- 이 풀이법은 다른 Lv0을 푸는데 도움이 되기도 했다.

'알고리즘 > 프로그래머스' 카테고리의 다른 글

[Lv0] 두 수의 나눗셈(Python)  (0) 2023.02.17
[Lv0] 두 수의 곱(Python)  (0) 2023.02.17
[Lv0] 나이 출력(Python)  (0) 2023.02.17
[Lv0] 나머지 구하기(Python)  (0) 2023.02.17
[Lv0] 숫자 비교하기(Python)  (0) 2023.02.17