- 임의의 양의 정수 n에 대해, n이 어떤 양의 정수 x의 제곱인지 아닌지 판단하려 합니다.
n이 양의 정수 x의 제곱이라면 x+1의 제곱을 리턴하고, n이 양의 정수 x의 제곱이 아니라면 -1을 리턴하는 함수를 완성하세요.
def solution(n):
x = n**(1/2)
if x % 1 == 0:
return (x+1) ** 2
else:
return -1
① n**(1/2)
# n의 1/2 제곱은 n의 제곱근이다.
ex.
121의 1/2 승
>> √121 = 11
② x % 1 == 0
# x를 1로 나눈 나머지가 0이면 양의정수이다.
# ex.
x = 11 이었을 때 1로 나누면 몫이 11, 나머지가 0
# 다른 풀이
import math
def solution(n):
x = math.sqrt(n)
if x != int(x):
return -1
return (x+1)** 2 # math.pow(x+1,2)
① import math
# math 내장 라이브러리 가져오기
② x = math.sqrt(n)
# x에 n의 제곱근을 저장
③ if x != int(x)
# x 값이 x의 정수값과 다르다는 조건
④ math.pow(x+1,2)
# x+1 의 제곱(2승)
* 내장 라이브러리
: 파이썬을 설치할 때 같이 설치되는 라이브러리
: 필요한 코드를 재사용하기 위해 호출할 수 있도록 클래스나 함수를 모아놓은 것
: import 로 꺼내 쓰면 됨
math.sqrt(제곱근을 구하려는 수)
ex.
math.sqrt(4)
>> 2.0
math.pow(밑,지수)
ex.
math.pow(2,3)
>> 2*2*2 = 8
왜
n**(1/2) 이 왜 n의 제곱근인지
%1==0 이 정수인지를 깨닫지 못하고 있다가
숫자를 넣어서 곱해보고.. 구글링을 해보고...제곱근을 다시 공부하고...
그리고 % 사용법을 다시 보고 와서 깨달았다...
나머지가 나오는 거였음을 !!
역시 문제를 풀면서 알게되는게 더 잘 남는 것 같다.
긴 시간이 걸렸지만 그래도 해결!
def solution(n):
for i in range(1,n+1):
if n==i*i:
return (i+1)*(i+1)
return -1
ㅋ..
어거지로 맞춘 답
그냥 3이면 -1 을 나오게 한거라 이렇게 풀면 안됨!
'파이썬 코드카타' 카테고리의 다른 글
하샤드 수 (0) | 2024.03.30 |
---|---|
정수 내림차순으로 배치하기 # sort, ''.join() (0) | 2024.03.28 |
자연수 뒤집어 배열로 만들기 # [::-1], reverse() (0) | 2024.03.28 |
x만큼 간격이 있는 n개의 숫자 # range() (0) | 2024.03.28 |
나머지가 1이 되는 수 찾기 # range() (0) | 2024.03.28 |