정수 제곱근 판별(88%)
import math
def solution(n):
x = math.sqrt(n)
if x % 1 == 0 :
answer = (x+1)**2
else:
answer = -1
return answer
자연수 뒤집어 배열로 만들기(88%)
def solution(n):
answer = list(str(n))
answer.reverse()
return list(map(int, answer))
문자열 내 p와 y의 개수
def solution(s):
n = list(s)
p = 0
y = 0
for i in range(len(n)):
if 'p' in n[i] or 'P' in n[i]:
p +=1
elif 'y' in n[i] or 'Y' in n[i]:
y +=1
if p==y:
answer = True
else :
answer = False
return answer
콜라츠 추측
처음에 이렇게 풀었는데 안됬다. 그래서 구글링을 해서 본 결과
answer = 0
if num == 1:
answer = 0
while True:
if num%2==0:
num = num/2
answer += 1
elif num%2==1:
num = num*3+1
answer += 1
if answer > 500 and num !=1:
answer= -1
break
return answer
아래의 코드는 되었다.
answer = 0
if num == 1:
return 0
while True:
num = num/2 if num % 2 == 0 else (num*3)+1
answer += 1
if num == 1:
return answer
elif answer == 500:
return -1
return answer
출처: https://wooaoe.tistory.com/76 [개발개발 울었다:티스토리]
분석을 해보면 아무래도 if문들을 써서 그런거 같다. if와 elif들로 조건을 설정하다가 마지막 elif의 조건을 항상 가지 못하는 듯 하다. 그래서 다시 바꿔봤다. 그냥 else쓰고, answer+=1의 조건은 num이 짝수일 때나 홀수인건 당연하니까 두 조건문 이후에 무조건 주는 것으로, 그리고 그 이후 if를 쓸까 하다가 answer가 500이상이 되면 break하는 것을 먼저 했다.
def solution(num):
answer = 0
if num == 1:
answer = 0
while num !=1:
if answer > 500:
answer= -1
break
if num%2==0:
num = num/2
else:
num = num*3+1
answer += 1
return answer
'Python > 코딩 테스트' 카테고리의 다른 글
파이썬 입력값 sys.stdin.readline()으로 두 줄 입력 읽는 방법 (0) | 2022.10.07 |
---|---|
파이썬 숫자 입력 받고 리스트로 순서 정렬하기 (0) | 2022.10.07 |
파이썬 여러줄 입력받기 문자열 숫자 따로 따로 인식하기 (0) | 2022.10.07 |
list comprehension 리스트와 for문을 적게 사용하기 (0) | 2022.09.29 |
프로그래머스 lv1 파이썬 정답률 80% 이상 (1) | 2022.09.19 |