hahn

[백준 - JAVA] 거듭제곱 본문

코딩테스트 연습/백준(JAVA)

[백준 - JAVA] 거듭제곱

hahn 2021. 9. 19. 12:07
728x90
반응형

1740번: 거듭제곱 (acmicpc.net)

 

1740번: 거듭제곱

3의 제곱수를 생각하자. 3의 0제곱, 3의 1제곱, 3의 2제곱, ... 은 순서대로 1, 3, 9, 27, ... 이 된다. 이를 바탕으로, 한 개 이상의 서로 다른 3의 제곱수의 합으로 표현되는 수를 생각할 수 있다. 예를

www.acmicpc.net

http://boj.kr/50e04c8a472a446bbb8724a2230d2854

 

공유 소스 보기

 

www.acmicpc.net

더보기
import java.util.Scanner;

class Main{
    
    public static void main(String[] args) {
		
		Scanner sc = new Scanner(System.in);
		
		long input = sc.nextLong();
		
		long result = 0,
			 pow = 1;
		
		String str;
		
		str = Long.toBinaryString(input);
		
		for(int i = 0; i < str.length(); i++) {
			
			if(str.charAt(str.length() - 1 - i) == '1') {
				
				result += pow;
				
			};
			
			pow *= 3;
			
		}
		
		System.out.println(result);

	}
    
}

 

2진수를 활용한 문제이다.

 

n의 자리가 의미하는 바가

 

3^(n - 1)이기에 1일 때, 그 값을 더 해주면 된다.

 

Math.pow 쓰려했는데

 

혹시 소수점 오차 생길까 봐 그냥 새로 변수 넣어서

 

진행했다.

728x90
반응형