티스토리 뷰

 

이번 문제는 보자마자 아스키코드를 활용하여야한다 생각했다.

 

아스키코드에서 각 자연수 자리수에 'a'를 더한 값을 string으로 변환하는 방법을 채택했다.

자연수는 이전 문제로 습득한 나머지 연산으로 10단위로 나누는 방식을 사용했다.

 

using System;
using System.Text;

public class Solution {
    public string solution(int age) {
        StringBuilder answer = new StringBuilder();
        
        for (int k = age % 10; age > 9; age /= 10, k = age % 10)
            answer.Insert(0, (char)(k + 'a'));
        
        answer.Insert(0, (char)(age + 'a'));
        
        return answer.ToString();
    }
}

 

string 형변환과 Insert, StringBuilder사용으로 기대이하의 퍼포먼스가 나온 것 같다.

 

다른 분들의 정답도 확인 중 로직은 비슷하나 훨씬 간결하고 잘 표현하신 분의 코드를 사용해보았다.

 

 

using System;

public class Solution {
    public string solution(int age) {
        string answer = "";
        while(age>0)
        {
            answer=(char)(age%10+97)+answer;
            age/=10;
        }
        return answer;
    }
}

 

목표와 방식은 거의 동일했지만 더 간략하고 깔끔한 코드로 작성하셨고 결과마저 월등하셨다.

특히, StringBuilder로 문자열 앞에 넣을 생각을 했던 나와 달리 애초에 문자열을 뒤에 +연산자로 입력하시는 부분이 생각치 못한 부분이었다.

 

+연산자가 메모리를 더 잡아먹고 가비지 컬렉터 호출을 하겠지만 애초에 테스트 케이스가 짧은 상황이면 훨씬 더 빠른 수행능력을 보이는 것 같다.

최근에 올라온 글
최근에 달린 댓글
«   2025/06   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
글 보관함