문제 풀기/C#
40. 3진법 뒤집기
kagan-draca
2025. 1. 22. 15:43
풀이 1) int 형 매개변수 n을 %(나머지)을 수행한 결과를 string temp 변수에 저장 후 문자열 temp를 뒤집고
각각의 element와 index를 비교해서 element * 3^index를 한 결과를 모두 더한다.
using System;
using System.Linq;
public class Solution {
public int solution(int n) {
string temp = "";
while(n != 0)
{
temp += n % 3;
n /= 3;
}
temp = new string(temp.Reverse().ToArray());
return (int)temp.Select((element, index)=> int.Parse(element.ToString()) * Math.Pow(3, index)).Sum();
}
}
처음에는 위와 같은 방식으로 풀었지만, 다른 사람들이 푼 방식이 궁금해서 조금 찾아 봤다.
풀이 2) 먼저, int 형 변수 1개(answer)를 선언하고 매개변수 n을 /(나누기) 3을 진행하면서 answer에 n % 3을 저장한다.
이때, 핵심은 각 진행마다 answer *= 3을 해서 이전 answer = n % 3의 결과가 * 3배 될 수 있도록 해준다.
using System;
public class Solution {
public int solution(int n) {
int answer = 0;
while(n > 0)
{
answer *= 3;
answer += n % 3;
n /= 3;
}
return answer;
}
}
위와 같이 형변환을 많이 사용하지 않고 수행 시간이 짧은 방식으로
반전된 3진법 -> 10진법으로 표현할 수 있다는 사실이 놀랍다...
(아직 갈 길이 멀다...)