관리 메뉴

Storage Gonie

(9) [C++, Java] 백준 No.2089 : -2진수 본문

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

(9) [C++, Java] 백준 No.2089 : -2진수

Storage Gonie 2019. 5. 7. 14:08
반응형

문제

풀이

자세한 풀이 : 

 

# C++(나의 풀이)
- 백준의 재귀방식을 풀어씀

#include <iostream>
#include <algorithm>
#include <string>

using namespace std;

int main(){
    int n;
    cin >> n;
    string s;

    while(n != 0)
    {
        if (n%2 == 0)
        {
            s += "0";
            n = -(n/2);
        }
        else
        {
            if(n > 0)
                n = -(n/2);
            else
                n =  (-n+1)/2;

            s += "1";
        }
    }
    reverse(s.begin(), s.end());

    if (s.size() == 0)
        cout << "0" << endl;
    else
        cout << s << endl;
}

# C++(백준 풀이)
- 재귀방식으로 구현

#include <cstdio>
void go(int n) 
{
    if(n==0)
        return;
        
    if (n%2 == 0) 
    {
        go(-(n/2));
        printf("0");
    } 
    else 
    {
        if (n > 0) 
            go(-(n/2));
        else
            go((-n+1)/2);
            
        printf("1");
    }
}
int main(){
    int n;
    
    scanf("%d\n",&n);
    
    if(n==0)
        printf("0\n");
    else
        go(n);
}

# Java

import java.util.*;

public class Main {
    public static void go(int n) {
        if (n == 0) {
            return;
        }
        if (n%2 == 0) {
            go(-(n/2));
            System.out.print(0);
        } else {
            if (n > 0) {
                go(-(n/2));
            } else {
                go((-n+1)/2);
            }
            System.out.print(1);
        }
    }
    public static void main(String args[]) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        if (n == 0) {
            System.out.println(0);
        } else {
            go(n);
            System.out.println();
        }
    }
}

 

반응형
Comments