엄지월드

68935 진법 뒤집기 본문

알고리즘

68935 진법 뒤집기

킨글 2022. 9. 9. 11:30

문제 해석

- 진법으로 바꿔서 계산을 하는 문제이다.

 

헷갈렸던 점

- 진법으로 어떻게 하면 쉽게 바꿀 수 있을까? 바로 생각이 나지 않아서 시간이 소요되었다. 
그래서 진법 변환 방법을 첨부해둔다.

- StringBuffer에서 insert를 사용하면 앞에서부터 계속 문자를 추가할 수 있다. 

전체 코드

import java.util.Arrays;
import java.util.HashSet;
import java.util.Stack;

public class Main {
    public static void main(String[] args) {
        solution(18);
        solution(45);
        solution(125);
        solution(1);
        solution(100000000);
    }
    public static int solution(int n) {
        int answer = 0;
        StringBuffer sb = new StringBuffer();
        int copyN = n;
        while(true){
            if(copyN == 1){
                sb.insert(0, 1);
                break;
            }else if(copyN == 0) break;

            int mok = copyN / 3;
            int namozi = copyN - (mok * 3);
            sb.insert(0, namozi);
            copyN = mok;
        }
//        System.out.println("3진법:"+sb);
        sb = sb.reverse();
        long reverseNum = Long.parseLong(String.valueOf(sb));
        sb = new StringBuffer(String.valueOf(reverseNum));
        answer = 0;

        for(int i=0; i<sb.length(); i++){
            int number = Integer.parseInt(String.valueOf(sb.charAt(i)));
            answer += Math.pow(3, sb.length()-i-1) * number;
        }
        return answer;
    }
}

 

'알고리즘' 카테고리의 다른 글

42862 체육복  (1) 2022.09.11
72410 신규 아이디 추천  (0) 2022.09.09
백준 1967 트리의 지름(DFS)  (0) 2022.09.06
성격 유형 검사하기 java  (0) 2022.09.04
오픈채팅방 java  (0) 2022.09.03
Comments