[BAEKJOON] 백준 17253: 삼삼한 수 2 (C#)
2024. 8. 22. 02:13ㆍIT/BaekJoon
문제 링크
https://www.acmicpc.net/problem/17253
문제
준하는 3의 거듭제곱인 수만 사용하여 만들 수 있는 수를 보면 삼삼한 느낌을 받는다.
이 느낌을 정확히 설명하자면, 3의 거듭제곱인 수들을 겹치지 않고 한번씩만 더해서 어떤 수 x를 만들 수 있다면 그 수는 삼삼하다고 한다. 삼삼한 수는 3의 거듭제곱인 수가 반드시 하나 이상 포함되어야 한다.
예를 들어, 109는 30+33+34로 나타낼 수 있으므로 삼삼한 수이다. 하지만 7과 18은 삼삼하지 않다.
준하는 삼삼한 수가 얼마나 더 있는 지 알아보려고 한다.
입력
첫째 줄에 9,223,372,036,854,775,807보다 작거나 같은 음이 아닌 정수 N이 입력된다.
출력
입력된 수가 삼삼하다면 YES, 그렇지 않다면 NO를 출력한다.
통과한 답안
namespace _17253
{
internal class Program
{
static void Main(string[] args)
{
long N = long.Parse(Console.ReadLine());
Console.WriteLine(isTrit(N) ? "YES" : "NO");
}
static bool isTrit(long n)
{
if (n == 0) return false;
while (n > 0)
{
long remainder = n % 3;
if (remainder > 1)
{
return false;
}
n /= 3;
}
return true;
}
}
}
숫자 N이 주어졌을 때, N이 삼삼한 수인지 판단하는 문제이다.
삼삼한 수는 해당 숫자를 3의 거듭제곱을 겹치지 않고 한번씩만 더해서 만들 수 있는 수이다.
예를 들어 109는 3^0 + 3^3 + 3^4로 나타낼 수 있는 삼삼한 수이다.
삼삼한 수는 3의 거듭제곱을 0개 혹은 1개 사용해서 더했을 때 나타나는 수로
3진수로 표현할 수 있는 수인지 확인하면 판단할 수 있다.
따라서 N이 0인지 판단하여 0이라면 삼삼한 수가 아니고
(3의 거듭제곱이 최소 1개 이상 포함되어야 하므로)
3진수로 표현할 수 있는 수라면 삼삼한 수가 된다.
'IT > BaekJoon' 카테고리의 다른 글
[BAEKJOON] 백준 9289: Morse Code (C#) (0) | 2024.08.22 |
---|---|
[BAEKJOON] 백준 5567: 결혼식 (C#) (0) | 2024.08.22 |
[BAEKJOON] 백준 18268: Cow Gymnastics (C#) (0) | 2024.08.22 |
[BAEKJOON] 백준 9693: 시파르 (C#) (0) | 2024.08.22 |
[BAEKJOON] 백준 31789: 모험의 시작 (C#) (0) | 2024.08.20 |