유니 코드

[PGS/프로그래머스][Lv1] x만큼 간격이 있는 n개의 숫자(Kotlin) 본문

알고리즘/미분류

[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())}
        }
}

 

Comments