오늘의 문제
비기너 문제 첫번째
문제 설명
임의의 양의 정수 n에 대해, n이 어떤 양의 정수 x의 제곱인지 아닌지 판단하려 합니다.
n이 양의 정수 x의 제곱이라면 x+1의 제곱을 리턴하고, n이 양의 정수 x의 제곱이 아니라면 -1을 리턴하는 함수를 완성하세요.
제한 사항
n은 1이상, 50000000000000 이하인 양의 정수입니다.
입출력 예
n return
121 144
3 -1
입출력 예 설명
입출력 예#1
121은 양의 정수 11의 제곱이므로, (11+1)를 제곱한 144를 리턴합니다.
입출력 예#2
3은 양의 정수의 제곱이 아니므로, -1을 리턴합니다.
간단히 말해서 제곱인지 아닌지 판단해서 다른 결과를 나타내라는 말이다.
정답은 간단했다.
def solution(n):
for i in range(1, int(n**0.5) + 1): # 올바른 루프 구문 및 조건
if i * i == n:
return (i + 1) ** 2 # 다음 정수의 제곱 반환
return -1 # 완전제곱수를 찾지 못한 경우 -1 반환
다음은 미들러의 문제도 풀이 해보았다.
문제 설명
문자열 s에는 공백으로 구분된 숫자들이 저장되어 있습니다. str에 나타나는 숫자 중 최소값과 최대값을 찾아 이를 "(최소값) (최대값)"형태의 문자열을 반환하는 함수, solution을 완성하세요.
예를들어 s가 "1 2 3 4"라면 "1 4"를 리턴하고, "-1 -2 -3 -4"라면 "-4 -1"을 리턴하면 됩니다.
제한 조건
s에는 둘 이상의 정수가 공백으로 구분되어 있습니다.
입출력 예
s return
"1 2 3 4" "1 4"
"-1 -2 -3 -4" "-4 -1"
"-1 -1" "-1 -1"
이것도 간단 했다. 파이썬의 min,max 라이브러리를 사용하면 되었다 .
def solution(s):
n = list(map(str,s.split()))
n = list(map(int,n))
return "{} {}".format(min(n),max(n))
공백을 기준으로 문자열을 나누고, 다시 정수형으로 바꾼 다음에 최소, 최댓값으로 찾아서 리스트 문자열로 출력하면 되었다. 조금씩 다시 코딩 패턴이 보이기 시작한다. 더 해야겠다.
'TIL' 카테고리의 다른 글
99클럽 7번째 (0) | 2024.03.31 |
---|---|
99클럽 TIL 6번째 (1) | 2024.03.30 |
99클럽 다섯번째 TIL (0) | 2024.03.29 |
99 클럽 4일째 TIL (0) | 2024.03.28 |
99 클럽 TIL 1일 (1) | 2024.03.25 |