▷ 코드카타

[내일배움캠프 _ QA/QC 5기] 15일차 _ 코드카타 15~16문항

qc-standard 2026. 3. 27. 18:03

⊙ 코드카타

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
ex)  x = 3   /   n = 5
▶ (코드 풀이)
     i = [3, 4, 5] : 3부터 5까지
     anwser = [9, 12, 15]
  ???? 더 이상한 코드인데?????
      출력된 리스트에 5개도 아니고 3개뿐이고
      x부터 시작이라고 했는데,,,, 9부터 시작인뎁쇼??
도대체 뭘 더 해야하는 건가? 뭘 잘못 생각한건데??


x = 3으로 예를 들면 구구단 3단에서 3x1 ~ 3x5를 원하는건가??
그럼 range 설정을 1부터 n까지 해야겠네
어차피 answer에서 x를 곱할거니까!!

def solution(x, n):
    answer = []
    for i in range(1, n + 1):
        answer = (x * i) 
    return answer
먼데?!!!!!! 이번에는 왜 안되는데???!!!!!!!



정답

def solution(x, n):
    answer = []
    for i in range(1, n + 1):
        answer.append(x * i)  #answer 리스트!! 리스트에 추가할때는 append 

                                          #append를 사용해 answer 안 각 값에 x를 곱해서
                                          #[]리스트 형식으로 출력해야함 
    return answer