본문 바로가기

Skill Sets/Python

[Python] x만큼 간격이 있는 N개의 숫자(프로그래머스/python/Level 1)

SMALL

안녕하세요! 데코입니다!

 

오늘은 프로그래머스 코딩테스트 연습에 있는 "x만큼 간격이 있는 N개의 숫자" 문제를 포스팅하려고 합니다!

 

바로 포스팅 시작할게요! :)

(출처 : https://school.programmers.co.kr/learn/courses/30/lessons/12954)

 


 

1. 문제 :  x만큼 간격이 있는 N개의 숫자(Lv. 1)

 


 

2. 문제 설명

 

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

 

[ 제한 사항 ]

 

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

 

[ 입출력 예 ]

 

x n answer
2 5 [2,4,6,8,10]
4 3 [4, 8, 12]
-4 2 [-4, -8]

 

3. 문제 풀이

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

# 2안
def solution(x, n):
    answer = [x + (x * i) for i in range(n)]
    return answer

 

문제 설명에 맞는 코드를 작성하기 위해서 총 2안으로 작성했습니다!

 

두 코드 모두 내용적으로는 동일한 내용인데,

 

2안은 1안을 한 줄로 표현한 간결한 코드로 보시면 됩니다!

 

#  1안 풀이 설명

# [ 문제 풀이 설명 ]

 

문제와 입출력 예시를 보며, n회 반복을 해주는 것을 확인하고 반복문이 필요하겠다고 생각을 했습니다!

 

그리고 answer 시작은 x와 동일하고 x만큼 간격이 존재하니까 x를 활용해서 간격을 만들어주려고 했습니다!

 

따라서 1안은 반복문 for i range(n)을 통해 0~n-1, 총 n번만큼 반복해 주었고

 

시작은 x

그다음은 x + x = 2x

그 다다음은 x + x + x =3x 

 

위 와 같이 value 값을 만들어주었고

 

이후 append() 함수를 통해 answer 리스트에 담아주고

 

return 해주었습니다!

 

x=4, n=3을 예로 들어볼게요!

 

n=3 이므로 3번 반복(0~2) 첫 번째, 4 + (4*0) = 4 > append() 두 번째, 4 + (4*1) = 8 > append() 세 번째, 4 + (4*2) = 12 > append()

 

answer = [4, 8 ,12]

 

이후 answer 변수를 return 해주었습니다!

 

# 1안

def solution(x, n):
    # 빈 answer 리스트를 선언

    answer = []
    # n만큼 반복

    for i in range(n):
        # x에서 시작해서 x만큼 키우는 코드

        value = x + (x*i)
        # 산출한 value를 answer에 append

        answer.append(value)
    return answer

 

 

#  2안 풀이 설명

# [ 문제 풀이 설명 ]

 

2안의 코드는 1안의 코드와 동일한 내용이에요!

 

코드를 조금 더 간결하기 작성하기 위해서 리스트 컴프리헨션(List Comprehension)을 활용해 보았어요!

 

리스트 컴프리헨션은 리스트를 생성하기 위해 반복문과 조건문을 사용하여 한 줄로 표현하는 기법을 말해요!

 

1안에서 한 것과 같이 리스트를 선언한 루프 방식(반복문)과 비교해 보면,

 

리스트 컴프리헨션은 더 간결하고 가독성이 좋아서 코드를 더 효율적으로 작성할 수 있습니다.

 

 

# 2안

def solution(x, n):
     # 리스트 컴프리헨션을 통한 코드 작성
    answer = [x + (x * i) for i in range(n)]
    return answer

정답...!

 


 

4. 문제 풀이 후기

이번 정수 n과 자연수 n을 입력받아,

 

x부터 시작해 x씩 증가하는 숫자를 n개 지니는  리스트를 구하는 문제였습니다.

 

저번 문제들과 같이 반복문이 계속 활용되는 것도 보이고

 

다른 문제와의 차별점은 리스트 컴프리헨션을 이용해서 코드를 간결하게 짠 것이고

 

반복문에 append()를 활용한 과정에서 무조건 활용이 가능한 방법이에요!

 

장점은 코드가 정말 간결하다는 것이지만,

 

단점은 파이썬 코드를 잘 모르는 사람이 보기에는 해석이 조금 걸리는 것 같아요!

 

이 외에는 어려운 부분이 없어서 제가 따로 코멘트할 것은 없습니다!

 



이번 포스팅은 프로그래머스에 있는

 

python을 이용한 코딩테스트 문제를 풀어보았습니다!

 

앞으로도 sql 뿐만 아니라 python을 이용한 코딩테스트도 포스팅을 하려고 합니다!

 

너무 쉬운 부분만 있다면 이번 포스팅처럼  다른 풀이 방법도 설명하면서 진행하려고 해요!

 

설명이 어려운 부분 혹은 잘 이해가 안 가는 부분

그리고 더 궁금한 내용이 있다면

언제든지 댓글로 남겨주세요!

빠르게 궁금증을 해결해 드릴게요!

공감과 댓글은 큰 힘이 됩니다!

오늘도 블로그 방문해 주시고

포스팅 읽어주셔서 감사합니다!

 

LIST