📌프로그래머스 120834
💡풀이
- char 배열에 0 ~ 9 인덱스까지 a ~ j를 순서대로 담는다
- 10으로 나눈 나머지로 1의 자리 수 나이를 알파벳으로 변환해 StringBuilder에 Append
- 나이를 10으로 나눠 0이 될 때 까지 반복
- 이렇게 들어간 나이는 123살이면 bcd가 아니라 dcb로 들어가있기 때문에 뒤집어준다.
public string 외계행성의나이(int age)
{
StringBuilder sb = new StringBuilder();
char[] converter = { 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j' };
while(age > 0)
{
int first = age % 10;
sb.Append(converter[first]);
age /= 10;
}
// 뒤집기
int length = sb.Length;
for (int i = 0; i < length / 2; i++)
{
char temp = sb[i];
sb[i] = sb[length - i - 1];
sb[length - i - 1] = temp;
}
return sb.ToString();
}
다른 사람의 풀이
public string 외계행성의나이(int age)
{
string answer = "";
while (age > 0)
{
answer = (char)(age % 10 + 97) + answer;
age /= 10;
}
return answer;
}
- char 문자가 정수로 변환이 되는 것을 이용해 97을 더했다.
- string 자체를 새로 할당하는 방식을 사용했는데 앞서 구한 문자 + answer를 통해 한 방에 순서를 알맞게 나열했다.
- 그럼에도 StringBuilder를 사용한 것 보다 빠른데 아마 age의 제한이 1000이하 자연수라서 그런가보다.
'프로그래머스' 카테고리의 다른 글
배열 회전시키기 (C#) (0) | 2024.06.01 |
---|---|
A 강조하기 (C#) (0) | 2024.06.01 |
콜라츠 수열 만들기 (C#) (0) | 2024.05.31 |
원하는 문자열 찾기 (0) | 2024.05.31 |
x 사이의 개수 (0) | 2024.05.31 |