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

[프로그래머스] - 자연수 뒤집어 배열로 만들기(C#)

by jyppro 2023. 7. 20.

자연수 뒤집어 배열로 만들기

오늘 풀어볼 문제는 "자연수 뒤집어 배열로 만들기" 입니다. 문제를 한번 살펴보도록 하겠습니다.

 

문제 설명

자연수 n을 뒤집어 각 자리 숫자를 원소로 가지는 배열 형태로 리턴해주세요. 예를들어 n이 12345이면 [5,4,3,2,1]을 리턴합니다.

 

제한 조건

  • n은 10,000,000,000이하인 자연수입니다.

 

입출력 예

n return
12345 [5,4,3,2,1]

 

시작 코드

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

 

나의 풀이

using System;
using System.Linq;

public class Solution {
    public int[] solution(long n) {
        string temp = n.ToString();
        int[] answer = new int[temp.Length];
        for(int i = 0; i < temp.Length; i++) { answer[i] = int.Parse(temp[i].ToString());}
        Array.Reverse(answer);
        return answer;
    }
}

풀이를 살펴보도록 하겠습니다.

 

string타입의 temp를 만들고 그 안에 long타입으로 입력받은 n을 ToString()을 통해 string타입으로 변환시켜 줍니다.

 

그리고 시작코드에 이미 만들어져있던 answer의 길이를 temp.Length로 정의해줍니다.

 

for문을 temp의 길이만큼 돌려서 인덱스 순서대로 answer에다가 temp를 string으로 변환시킨 것을 Parse를 통해 int형으로 다시 변환시켜 줍니다.

 

변환시켜 answer에 담긴 것을 Reverse를 통해 뒤집어 준 뒤 정답을 리턴합니다.

 

이번 문제에서 자세히 살펴봐야 할 것은 ToString()을 통한 string타입으로의 변환, int.Parse()로 다시 int형으로 변환 그리고 Array.Reverse()로 배열을 뒤집는 것입니다.

 

가장 먼저, ToString()은 string타입으로 변환시키는 것은 쉽게 알 수 있지만 왜 변환시키는가를 봐야합니다. 해당 풀이 방법에서는 for문을 통해 temp를 인덱스에 접근하는 방식으로 answer배열에 저장하기 때문인데 인덱스로 접근하기 위해서는 string타입으로 바꿔주어야 하기 때문입니다. 그리고 비슷한 이유로 문자열을 인덱스로 접근하게 되면, temp[i] 는 Char 타입이 되기 때문에 string으로 다시 복구시켜준다음, int.Parse()를 통해 int형으로 변환시켜줍니다. 마지막으로 Array를 통해 배열에 관련된 함수들을 사용할 수 있는데 그 중에서 Reverse()를 사용하여 배열의 배치를 거꾸로 뒤집어 [1,2,3,4,5] 가 [5,4,3,2,1] 이 되게 합니다.

 

<NEXT>

오늘은 "자연수 뒤집어 배열로 만들기" 문제를 풀어보았습니다. 다음에는 "정수 제곱근 판별" 문제를 풀어보도록 하겠습니다. 감사합니다.