관리 메뉴

Storage Gonie

(6) [C++, Java] 백준 No.2745 : 진법 변환 본문

알고리즘/백준풀이7. 수학

(6) [C++, Java] 백준 No.2745 : 진법 변환

Storage Gonie 2019. 5. 6. 18:27
반응형

문제

풀이

자세한 풀이 : 

 

# C++(나의 풀이)

#include <iostream>

using namespace std;

int main() {
    string N;
    int B;

    cin >> N >> B;

    int result = 0; // 초기화 꼭해주기

    for (int i = 0; i < N.size(); i++)
    {
        int temp;

        // B진수의 각 자리값(문자)을 0 ~ 35의 숫자로 변환하기
        if (N[i] <= 57)            // '9' : 57
            temp = N[i] - 48;            
        else
            temp = N[i] - 55;       // 'A' : 65, 'Z' : 90

        // 각 자리의 수 * B^k 해주기
        for(int j = 0; j < N.size()-i-1 ; j++)
                temp *= B;

        // 각 자리에서 계산된 값 최종 출력값에 합해주기
        result += temp;
    }
    
    cout << result;
}

# C++(백준 풀이)
- ans = 0;
   각 자리에 대해서 ans = (ans * A) + N[i] 적용

#include <iostream>
#include <string>

using namespace std;

int main() {
    int ans = 0;
    string s;
    int b;
    
    cin >> s >> b;
    
    for (int i=0; i<s.size(); i++) 
    {
        if ('0' <= s[i] && s[i] <= '9')
            ans = ans * b + (s[i] - '0');
        else 
            ans = ans * b + (s[i] - 'A' + 10);
    }
    
    cout << ans << '\n';
}

# Java

import java.util.*;

public class Main {
    public static void main(String args[]) {
        Scanner sc = new Scanner(System.in);
        String[] line = sc.nextLine().split(" ");
        String s = line[0];
        int b = Integer.valueOf(line[1]);
        int ans = 0;
        for (int i=0; i<s.length(); i++) {
            char c = s.charAt(i);
            if ('0' <= c && c <= '9') {
                ans = ans * b + (c - '0');
            } else {
                ans = ans * b + (c - 'A' + 10);
            }
        }
        System.out.println(ans);
    }
}

 

반응형
Comments