알고리즘/미분류
[PGS/프로그래머스][Lv1] x만큼 간격이 있는 n개의 숫자(Kotlin)
꼬물쥰
2022. 5. 12. 01:20
[문제 설명]
함수 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만큼 증가하는 수 n개를 반환배열에 추가해주기만 하면된다.
행렬의 덧셈 문제와 마찬가지로 배열의 초기화를 할 때 값을 추가해주었다.
다만 이 문제는 제한 조건을 봤을 때 x와 n값이 모두 크다면 오버플로우가 발생할 수 있어서
초기화할 때 toLong()으로 타입을 변경해주었다.
첫 제출 코드는 Array<Long>(n){i -> ((i+1) * x).toLong()} 과 같이 곱해준 값에 toLong()을 해주어서
테스트케이스 2개가 실패했다. 왜그런지 몰랐는데 곰곰히 생각해보니 곱한 값이 크다면 이미
오버플로우가 발생한 후인데 그다음에 타입을 변환하기 때문에 실패가 뜬 것이었다.
그래서 x를 먼저 형변환하고 곱해주니 테스트 케이스 모두 통과했다.
[코드]
class Solution {
fun solution(x: Int, n: Int): Array<Long> {
return Array<Long>(n){i -> ((i+1) * x.toLong())}
}
}