새소식

Career/Coding Test

99클럽 코테 스터디 2/99일차 TIL # x만큼 간격이 있는 n개의 숫자(미들러)

  • -
반응형

 

1. 문제 설명

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

제한사항

 

2. 문제 해석

간단한 문제. 

x 값과 n 값이 주어지면 x, x+x, x+x+x, x+x+x+x ..... 을 n개 return 한다.

이 때 x+(n-1)*x 값으로 간단히 표현하고 이를 배열에 추가한다.

'''
x: 정수
n: 자연수
x부터 시작해서 x 씩 증가하는 숫자 n개 return

'''

 

3. 풀이

풀이 (1) 100/100

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

테스트 1 통과 (0.00ms, 10.3MB)
테스트 2 통과 (0.04ms, 10.3MB)
테스트 3 통과 (0.04ms, 10.3MB)
테스트 4 통과 (0.09ms, 10.1MB)
테스트 5 통과 (0.04ms, 10.3MB)
테스트 6 통과 (0.00ms, 10.1MB)
테스트 7 통과 (0.09ms, 10.3MB)
테스트 8 통과 (0.03ms, 10.4MB)
테스트 9 통과 (0.11ms, 10.3MB)
테스트 10 통과 (0.00ms, 10.2MB)
테스트 11 통과 (0.06ms, 10.2MB)
테스트 12 통과 (0.06ms, 10.2MB)
테스트 13 통과 (0.13ms, 10.3MB)
테스트 14 통과 (0.12ms, 10.3MB)

여기서 list comprehension을 이용하여 짧게하면 다음과 같다.

풀이(2) 100/100, (1)에 비해 약간 빨라짐, List Comprehesion 적용

def solution(x, n):
    
    answer = [x+x*i for i in range(n) ]
    
    return answer
테스트 1 통과 (0.00ms, 10.2MB)
테스트 2 통과 (0.02ms, 10.2MB)
테스트 3 통과 (0.03ms, 10.3MB)
테스트 4 통과 (0.04ms, 10.2MB)
테스트 5 통과 (0.03ms, 10.4MB)
테스트 6 통과 (0.01ms, 10.2MB)
테스트 7 통과 (0.07ms, 10.2MB)
테스트 8 통과 (0.02ms, 10.4MB)
테스트 9 통과 (0.08ms, 10.3MB)
테스트 10 통과 (0.00ms, 10.2MB)
테스트 11 통과 (0.04ms, 10.1MB)
테스트 12 통과 (0.05ms, 10.3MB)
테스트 13 통과 (0.10ms, 10.3MB)
테스트 14 통과 (0.10ms, 10.3MB)

테스트 14에서 기존보도 0.02ms 빨라졌다.

이런식으로 약간의 간소화는 가능하지만 실제로 코딩할 때는 list comprehension을 쓰면 가독성이 많이 떨어져(나의 실력탓 ㅋㅋㅋ) 잘 쓰지 않고 있다.

 

4. 정리

아무래도 간단한 문제라 코드부터 쳤는데 어제와 마찬가지로 문제의 간단한 case를 실제로 손으로 적어가면서 확인하는 습관을 가져야겠다.

반응형
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.