본문 바로가기
프로그래머스

외계행성의 나이 (C#)

by LemongO 2024. 5. 31.

📌프로그래머스 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