https://school.programmers.co.kr/learn/courses/30/lessons/87389
def solution(n):
answer = []
for i in range(1, n):
if n % i == 1:
answer.append(i)
answer.sort()
return answer[0]
range 범위 설정에서 한번 에러가 나서, 다시 생각하여 에러를 해결했다.
n의 값이 3이상이라는 제한조건을 잘못 이해해서 범위를 range(3,n)으로 두었다가 테스트케이스에서 에러가 났고, 0을 나눌수없으니 1부터 시작조건을 주어 해결했다.
입력한 수를 1부터 입력한수-1까지 하나하나 증가시켜주면서 나누었을때 나머지값이 1인 숫자를 answer이라는 배열안에 하나씩 넣어주었다. 그리고 배열을 오름차순해서 가장작은 수가 맨 앞으로 오게했는데 지금 생각해보니까 min(answer)을 return해주어도 되었을 것 같다.
def solution(n):
answer = []
for i in range(1, n):
if n % i == 1:
answer.append(i)
return min(answer)
으로 작성해보니 잘 돌아간다.
import math
def solution(n):
answer = []
arry = [True for i in range(n+1)]
for i in range(2, int(math.sqrt(n))+1):
if arry[i] == True:
j = 2
while i*j <= n:
arry[i*j] = False
j += 1
for z in range(2, n+1):
if arry[z]:
if n % z == 1:
answer.append(z)
return min(answer)
이전에 나의 풀이를 확인해보니 이렇게 풀었다. 뭘까 왜 약수를 구하고있었는가ㅋㅋㅋㅋ에라스토테네스의 체를 왜 사용하고있는거지?ㅋㅋ 언제 풀이를 했는지 날짜가 나오지는 않지만.. 개념이 헷갈렸던 것인가? 그렇다면 정말 장족의 발전이 있었던 것이라고 생각하게 된다ㅋㅋㅋㅋ 그냥 실험적인 코드를 한번 실행해보았던 것으로 생각했다. 피식하고 넘어가자!ㅋㅋㅋ