알고리즘 CODEKATA 16 (x 만큼 간격이 있는 n개의 숫자)

오리너구리·2024년 5월 23일
0

CODEKATA

목록 보기
16/57

문제 설명

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


제한 조건

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

내 풀이

class Solution {
    fun solution(x: Int, n: Int): IntArray {
    
        var answer = intArrayOf()
        
        for(i in 1..n){
            answer = answer.plus(x*i)
        }
        
        return answer
    }
}

처음에는 이렇게 풀었는데,

코드 실행 해봤을 때 되길래 채점을 돌렸더니 테스트 14개중에 12개만 통과하고 2개를 통과못함!

지금까지 아예 안된적은 많아도 일부만 된적은 처음이라 신기했다

그래서 다른 방식으로 다시 도전

class Solution {
    fun solution(x: Int, n: Int): List<Int> {

        var answer = mutableListOf<Int>()

        for(i in 1..n){
            answer.add(x*i)
        }

        return answer
    }
}

이렇게 리스트로도 해봤는데 똑같이 마지막 2문제에서 테스트를 통과못했다고 뜨길래

GPT한테 물어봤더니

Int 타입의 범위를 초과하는 경우가 있어서 그렇다고한다.

Type을 Long으로 바꿔주면 된다고함!

class Solution {
    fun solution(x: Int, n: Int): List<Long> {

        var answer = mutableListOf<Long>()

        for(i in 1..n){
            answer.add(x.toLong()*i)
        }

        return answer
    }
}

그래서 이렇게 Long으로 타입을 바꿔주었더니 통과함


다른 사람 풀이

class Solution {
    fun solution(x: Int, n: Int): LongArray = LongArray(n) { x.toLong() * (it + 1) }
}

항상 들어가면 첫번째에 이렇게 간단한 코드 있는데 짱남

왜 이렇게 간단하게 푸는건데~~!!!

왜 나는 이렇게 못하는데~~~!!!


더 공부할 것

  1. 배열, 리스트 (공부했는데 직접 작성하려고 하니까 관련함수나 문법? 이 아직 낯설어서 이상함 더 공부하기~)
profile
오리너구리입니다

0개의 댓글