기록하는삶
[코딩 테스트 연습(파이썬/Python)] 프로그래머스 _ 정수 제곱근 판별 본문
https://programmers.co.kr/learn/courses/30/lessons/12934
[문제 설명]
임의의 양의 정수 n에 대해, n이 어떤 양의 정수 x의 제곱인지 아닌지 판단하려 합니다.
n이 양의 정수 x의 제곱이라면 x+1의 제곱을 리턴하고, n이 양의 정수 x의 제곱이 아니라면 -1을 리턴하는 함수를 완성하세요.
[제한 조건]
- n은 1이상, 50000000000000 이하인 양의 정수입니다.
def solution(n):
answer = [(pow(n, 0.5) +1)**2 if int(pow(n, 0.5))==pow(n, 0.5) else -1]
return int(answer[0])
처음보는 return의 형태가 있어 가져와봤다.
def solution(n):
# return A and B or C
return n == int(n**.5)**2 and int(n**.5+1)**2 or -1
파이썬에서는 0, [], '' 등이 False로 취급되고, 값이 있는 것은 True로 취급된다.
또한 return과 and/or 연산은 아래의 관계를 가진다.
1) return A and B
A, B 모두 참인 경우 -> return B
둘 중 하나만 참인 경우 -> return A or B (which is False)
둘 다 거짓인 경우 -> return A
2) return A or B
A, B 모두 참인 경우 -> return A
둘 중 하나만 참인 경우 -> return A or B (which is True)
둘 다 거짓인 경우 -> return B
이를 통해 위의 2번째 코드를 이해해보면 다음과 같다.
먼저 A, B 중 B는 무조건 참이므로,
A가 참이면 -> return B (= True : 값이 존재하므로)
A가 거짓이면 -> return A(= False : False이어서 A가 선택되었으므로)
즉,
A가 참이면 -> return B(True) or C(True) -> return B
A가 거짓이면 -> return A(False) or C(True) -> return C
따라서 A의 조건을 만족하면(n이 제곱근이면) B인 그 다음 제곱수가,
A의 조건을 만족하지 않으면(n이 제곱근이 아니면) C인 -1이 출력되는 매직..
'프로그래머스 > 프로그래머스_lv1(Python)' 카테고리의 다른 글
[코딩 테스트 연습(파이썬/Python)] 프로그래머스 _ 문자열 내 p와 y의 개수 (0) | 2021.09.10 |
---|---|
[코딩 테스트 연습(파이썬/Python)] 프로그래머스 _ 크레인 인형뽑기 게임 (0) | 2021.09.10 |
[코딩 테스트 연습(파이썬/Python)] 프로그래머스 _ 두 정수 사이의 합 (0) | 2021.09.10 |
[코딩 테스트 연습(파이썬/Python)] 프로그래머스 _ 같은 숫자는 싫어 (0) | 2021.09.10 |
[코딩 테스트 연습(파이썬/Python)] 프로그래머스 _ 가운데 글자 가져오기 (0) | 2021.09.10 |