2024. 12. 3. 18:00ㆍ입문문제
https://school.programmers.co.kr/learn/courses/30/lessons/12954
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
문제 설명
함수 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] |
초기 값 x부터 시작하여, x만큼의 값을 n번 반복하며 배열을 생성하는 함수입니다.
우선 기본적으로는 반복문을 사용해서 문제를 풀 수 있습니다.
저는 자바로는 반복문을 사용해서 값을 하나씩 집어넣고, 파이썬은 리스트 컴프리헨션을 사용하였습니다.
정답 코드를 작성해보겠습니다.
1. 자바
class Solution {
public long[] solution(long x, int n) {
// n개만큼의 배열을 선언합니다.
long[] answer = new long[n];
// n번 반복합니다.
for (int i = 0; i < n; i++) {
// 배열 값은 (i + 1) 값이 됩니다.
answer[i] = (i + 1) * x;
}
return answer;
}
}
2. 파이썬
def solution(x, n):
if x == 0: # x가 0인 경우
return [0] * n # x가 0이면 0으로 채워진 리스트 반환
return [x * i for i in range(1, n + 1)] # x가 0이 아닌 경우
간혹 파이썬에서 코드를 작성하실 때,
def solution(x, n):
answer = list(range(x, (n + 1) * x, x))
return answer
이렇게 list와 range 함수를 사용해서 문제를 풀면 되지 않느냐? 라고 생각하실 수 있습니다.
하지만 이럴 경우에는 8번 케이스에서 런타임 에러가 발생합니다.
런타임 에러가 발생하는 이유는 range 함수의 3번째 인자인 step에는 0을 집어넣을 수 없기 때문입니다.
step이 0일 경우, 무한 루프가 발생하기 때문에 파이썬 자체에서 막고 있는 것이죠.
따라서 x = 0인 케이스를 고려했을 때, 위처럼 조건문으로 분기를 나눠주셔야만 합니다.
'입문문제' 카테고리의 다른 글
| [연습문제] 숫자 짝꿍 (1) | 2024.12.05 |
|---|---|
| [연습문제] 직사각형 별찍기 (1) | 2024.12.04 |
| [연습문제] 행렬의 덧셈 (0) | 2024.12.01 |
| [연습문제] 핸드폰 번호 가리기 (0) | 2024.11.30 |
| [연습문제] 하샤드 수 (1) | 2024.11.29 |