15)문제: 자연수 n이 매개변수로 주어집니다. n을 x로 나눈 나머지가 1이 되도록 하는 가장 작은 자연수 x를 return 하도록 solution 함수를 완성해주세요. 답이 항상 존재함은 증명될 수 있습니다.
생각 과정 :
나머지가 1이 되도록 하는 가장 작은 자연수 x를 return 하도록 → 반복문을 사용하다가 나머지가 1일 될 때 반복문을 멈추고 그 값을 return하면 되지 않을까?
def solution(n) for x in range( , n+1): if n % x == 1: return x 안되네;;;; 뭐가 문제지??
튜터님 조언 : 문제에 대한 답을 바로 작성하지 말고 colab에 내 생각을 먼저 작성해서 Error를 확인할것!!
SyntaxError = 문법 에러
SyntaxError = 문법 에러 x라는 변수를 출력했을 뿐인데 에러라는건 range 문법에 대한 에러가 있는
음 ~ 잘 만들어 졌군
Zero Division Error : 말 그대로 '0 나누기 오류'
= 0은 나눌수 없다는 에러 표시
1 % 1 == 0이 되므로
2부터 시작해야
range(1, n)으로 예시는 통과가 되지만 x 변수에 1이 담기면,,, n % 할 때 1도 들어가는데,,, 1은 애초에 나누기가 성립이 안됨,,, 굳이 나누기 성립이 안되는 1을 넣을 필요성이 없으므로 2로 시작 (사람의 사고 과정에서 걸러야하는 오류)
정답 : def solution(n): for x in range(2, n): if n % x == 1: return x
16)문제: 함수 solution은 정수 x와 자연수 n을 입력 받아, x부터 시작해 x씩 증가하는 숫자를 n개 지니는 리스트를 리턴해야 합니다. 다음 제한 조건을 보고, 조건을 만족하는 함수, solution을 완성해주세요.
생각 과정 :
def solution(x, n): answer = [] return answer
① 빈리스트 만들기 - answer 이미 만들어져있음 ② for i in range (x, n+1, x): - 함수 range가 범위 함수니까 - range (데이터 시작, 데이터 끝, 간격) 이니까?
↓ 생각을 토대로 만든 코드 ↓ def solution(x, n): answer = [] for i in range(x, n+1, x): answer = i return answer 아니네? 안되네!!!,,,,뭐가 틀린거지??
ex) x = 3 / n = 5
answer [3]
▶ (만든 코드에 대한 개인의 생각) 3부터 시작해 5번째까지 + 3간격으로 5번째까지 출력,,,,될테지?라고 생각했으나,,,
▶ (실제 코드 풀이) range(3, 5+1, 3)일 때, 3~5까지 중 : [3, 4, 5] 중에 3 간격의 숫자를 출력하라는 코드 → 그래서 [3]만 출력됨 내 생각과는 전혀 다른 코드,,, range( ) 두번째 코드는 몇번째까지가 아님!! 일종의 금지선 N+1이면 N까지 출력됨
그렇다면,,, range 점프를 적지말고 범위만 설정하고 answer에서 곱하자
def solution(x, n): answer = [] for i in range(x, n+1): answer = (i * x) return answer