티스토리 뷰
반응형
14681번: 사분면 고르기
점 (x, y)의 사분면 번호(1, 2, 3, 4 중 하나)를 출력한다.
www.acmicpc.net
x = int(input())
y = int(input())
if x > 0:
print(1 if y > 0 else 4)
else:
print(2 if y > 0 else 3)
x가 0 이상일 때를 기준으로 해서 if else 문을 이중으로 써주면 된다.
문제 입력에 (0,0)은 들어가지 않으므로 써줄 수 있다. 만약 0,0이 들어간다면 elif를 한개 더 만들어서 예외처리를 해야만 한다.
print("3421"[input()>"0"::2][input()>"0"])
숏코딩으로 하면 다음과 같이 할 수도 있다.
첫번에 input에 x가 들어가고, 두번째 input에 y가 들어가서 extended slice인 ::를 수행한다.
(숫자)::2 라는 뜻은 숫자부터 끝까지 2칸 간격으로 출력한다는 뜻이다. 따라서 x가 양수면, True, 즉, 1이 들어가므로
인덱스 1부터 끝까지 2칸 간격으로 출력한다. 따라서 "3421"에서 인덱스 1은 4, 인덱스 3은 1이므로
'41' 이 먼저 만들어진다.
이렇게 얻은 '41'에서 y가 양수가 되면, 인덱스에 들어가는 건 [True], 즉, [1] 이므로
'41'에서의 1 인덱스인 1이 출력된다.
이렇게만 보면 좋아보이지만, 필자는 별로 추천하지 않는다. 시간복잡도 측면에서 그냥 if문 쓰는 게 더 빠르기 떄문이다.
그러니 웬만하게 비슷하지 않은 이상, 시간복잡도를 고려하면서 숏코딩을 짜자.
반응형