본문 바로가기
프로그래머스 코딩테스트 문제/Level 1

[프로그래머스] - x만큼 간격이 있는 n개의 숫자 (C#)

by jyppro 2023. 7. 14.

x만큼 간격이 있는 n개의 숫자

안녕하세요 최근에 건강이 좋지 못해서 업로드 주기가 들쭉날쭉하게 되었는데, 새로운 카테고리로 다시 찾아뵙게 되었습니다. 해당 카테고리는 코딩테스트 문제를 풀어보는 곳으로, 알고리즘 공부를 하는 곳이라고 생각하시면 되겠습니다.

문제들은 프로그래머스를 기준으로 1단계에서 가장 정답률이 높은 순서대로 하나씩 풀어나갈 예정입니다. 게임개발 카테고리와 번갈아가면서 업로드 될 예정이니 참고해 주시기 바랍니다. 그럼 인사는 이쯤 해두고 바로 문제를 풀어보도록 하겠습니다.

 

우선 현재는 유니티 게임개발을 주로 다루고 있기 때문에 C# 언어를 기준으로 모든 문제를 풀겠습니다.

 

문제 설명

함수 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]

 

시작 코드

public class Solution {
    public long[] solution(int x, int n) {
        long[] answer = new long[] {};
        return answer;
    }
}

 

나의 풀이

public class Solution
{
    public long[] solution(int x, int n)
    {
        long[] answer = new long[n];
        long longX = x;
        for(int i = 0; i < n; i++){
            answer[i] = longX;
            longX += x;
        }
        return answer;
    }
}

long타입의 answer 배열을 n의 길이만큼 선언 후, int형의 x를 long타입으로 변환시키기 위해 longX에 저장시킨다.

이후 for문으로 answer 배열의 인덱스 순서대로 longX를 넣어주고 longX에 x를 더해준다. 마지막에 answer를 리턴합니다.

 

이 문제에서 중요한 점은 long타입으로 변환해주는 것입니다. 제한조건에서 x의 범위가 -10000000 이상, 10000000 이하인 정수이고 n은 1000 이하인 자연수라고 하였기 때문에, x로 인해서 나올 수 있는 계산의 범위가 -21억 ~ 21억 사이인 int형의 범위를 벗어나기 때문입니다. 

 

<NEXT>

위에 인사말에서 말씀드렸다시피 업로드 주기는 알고리즘과 게임개발을 왔다갔다 할 것이기 때문에 항상 다릅니다. 저도 공부하면서 올리는 것이기 때문에 다같이 배우는 마음으로 봐주셨으면 합니다. 감사합니다.