문제 설명
자연수 n을 뒤집어 각 자리 숫자를 원소로 가지는 배열 형태로 리턴해주세요. 예를들어 n이 12345이면 [5,4,3,2,1]을 리턴합니다.
제한 조건
- n은 10,000,000,000이하인 자연수입니다.
입출력 예

풀이
using System;
public class Solution {
public int[] solution(long n) {
string str = n.ToString();
int[] answer = new int[str.Length];
for(int i =0;i<str.Length;i++)
{
answer[i] = int.Parse(str[i].ToString());
}
Array.Reverse(answer);
return answer;
}
}
인덱스를 사용하기 위해서 long 타입을 String 형식으로 변환해주고, 반환할 answer 배열의 크기를 str의 길이만큼 정해준다.
for문을 돌리며 answer[ ]에 str 문자열을 이루고 있는 문자를 int.Parse()를 이용해 int로 변환 후 하나씩 넣어준다.
이 때, string 문자열은 char 형식의 배열이므로 str[i]는 char 형식이 된다.
따라서 int.Parse()를 이용할 수 있도록 ToString()을 통해 char -> string 형식으로 변환해준다.
(int.Parse()는 인자값으로 string만 받음)
만들어진 answer 배열을 Array.Reverse()를 이용해 순서를 반전시켜주면 끝!
시행착오)
자꾸 이 오류가 왜 뜨나 했는데,,,
using System; 을 안 써주고 있었다 헤헷,, 잊지 말자!!
의문점 ) int.Parse() 대신 Convert.ToInt32()를 사용하면 안 될까?
public class Solution {
public int[] solution(long n) {
string str = n.ToString();
int[] answer = new int[str.Length];
for(int i =0;i<str.Length;i++){
answer[i] = Convert.ToInt32(str[i]);
}
Array.Reverse(answer);
return answer;
}
}
엥; 왜 53,52,51,50,49가 출력되지??
-> 찾아보니 Char 형식을 Convert.ToInt32()를 통해 반환할 경우 ASCII 코드를 반환한다!!
(String 형식을 반환할 때는 정수(int)로 잘 반환함)
따라서 Convert.ToInt32()를 사용하여 반환할 경우 Char 형식을 String 형식으로 반환 후 사용해야한다.
for(int i =0;i<str.Length;i++)
{
answer[i] = Convert.ToInt32(str[i].ToString());
}
이렇게 ToString()을 이용하여 반환 후 코드를 실행시키면
잘 출력된다~.~
'공부 > 코딩테스트' 카테고리의 다른 글
프로그래머스/C# - 정수 제곱근 판별 (0) | 2024.05.23 |
---|---|
프로그래머스/C# - 정수 내림차순으로 배치하기 (0) | 2024.05.22 |
프로그래머스/C# - 핸드폰 번호 가리기 (0) | 2024.05.17 |
프로그래머스/C# - 자릿수 더하기 (0) | 2024.04.15 |
프로그래머스/C# - 약수의 합 (0) | 2024.04.15 |