Python_코드카타(2024.01.29)

김수경·2024년 1월 29일

코드카타

목록 보기
23/29

13. 나머지가 1이 되는 수 찾기

문제

자연수 n이 매개변수로 주어집니다. n을 x로 나눈 나머지가 1이 되도록 하는 가장 작은 자연수 x를 return 하도록 solution 함수를 완성해주세요. 답이 항상 존재함은 증명될 수 있습니다.

👩🏻‍💻 My Coding

def solution(n) : 
    for x in range(n+1) : 
        n % (x+1) == 1 
    return x    

내가 쓴 코드는 이렇게 해석된다
이 주어진 함수는 자연수 n을 매개변수로 받아와서, n % (x+1) == 1 조건을 만족하는 가장 큰 x 값을 찾아서 반환

  • 문제1 :
    n % (x+1) == 1의 결과를 어떠한 변수에 저장하거나, 조건문 안에서 어떠한 동작을 수행하지 않음. 이 결과를 사용하지 않으면서 루프를 돌기 때문에 조건을 만족하는 x 값을 찾을 수 없습니다.
  • 문제 2 :
    return x가 루프 밖에 있어서 루프가 끝난 후에 x의 최종 값만 반환됩니다. 그러나 조건을 만족하는 x를 찾는 중에는 어떠한 결과도 반환되지 않습니다.

해설

def solution(n) : 
    for x in range(2, n+1):
        if n % x == 1 : 
            return x 

range(start, stop, step)

  • start: 시작 값
  • stop: 종료 값 (이 값은 시퀀스에 포함되지 않음)
  • step: 각 요소 간의 간격 (기본값은 1)

n을 x로 나눈 나머지가 1이 되도록 하는 가장 작은 자연수기 때문에 1로 나누는 경우는 나머지가 항상 0이라서 0이 출력된다. 그래서 2부터 시작해야 함


16. x만큼 간격이 있는 n개의 숫자

문제

함수 solution은 정수 x와 자연수 n을 입력 받아, x부터 시작해 x씩 증가하는 숫자를 n개 지니는 리스트를 리턴해야 합니다. 다음 제한 조건을 보고, 조건을 만족하는 함수, solution을 완성해주세요.

제한사항

x는 -10000000 이상, 10000000 이하인 정수입니다.
n은 1000 이하인 자연수입니다.

해설

코드를 제대로 짜지 못했다. 해설보고 공부해보자

def solution(n, x):
    answer = []
    for i in range(n):
        answer.append(x + i * x)
    return answer
  • 리스트의 길이는 'n'개
  • 리스트에 포함된 숫자는 'x'부터 시작하여 'x'씩 증가해야 한다.

아래의 코드와는 무엇이 다를까?

def solution(x, n): 
    answer = []
    for i in range(n):
        x = x + (i * x) 
        answer.append(x)
    return answer

두 코드의 중요한 차이는 계산된 값이 리스트에 추가 되기 전에 x가 갱신되느냐, 아니면 계산한 x값을 추가한 후에 x값이 갱신되느냐에 대한 차이다

  • 첫번째 코드는 리스트에 추가되기 전에 'x + i * x'를 계산하고, 이 값을 answer 리스트에 추가. x 값은 갱신되지 않는다.
  • 두번째 코드는 x값이 먼저 갱신되고 그 후에 x값이 갱신된 값을 리스트에 추가
profile
잘 하고 있는겨?

0개의 댓글