티스토리 뷰
이번 문제는 보자마자 아스키코드를 활용하여야한다 생각했다.
아스키코드에서 각 자연수 자리수에 '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로 문자열 앞에 넣을 생각을 했던 나와 달리 애초에 문자열을 뒤에 +연산자로 입력하시는 부분이 생각치 못한 부분이었다.
+연산자가 메모리를 더 잡아먹고 가비지 컬렉터 호출을 하겠지만 애초에 테스트 케이스가 짧은 상황이면 훨씬 더 빠른 수행능력을 보이는 것 같다.
'코딩테스트 > Programmers' 카테고리의 다른 글
[Programmers] 입문) 피자 나눠 먹기 (2) (최소공배수) (0) | 2023.06.28 |
---|---|
[Programmers] 입문) 배열 회전시키기 (Shift Array) (0) | 2023.06.28 |
[Programmers] 입문) 인덱스 바꾸기 (0) | 2023.06.27 |
[Programmers] 입문) 직각삼각형 출력하기 (Append) (0) | 2023.06.27 |
[Programmers] 입문) n의 배수 고르기 (Where) (0) | 2023.06.27 |