일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
- java
- 백준자바
- dp
- dfs
- 백트래킹
- 코딩공부
- 자바개념
- 개발공부
- BFS
- 무료코딩강의
- 자바의정석연습문제
- 빅오 표기법
- 자바공부
- 자바
- 백준단계별로풀어보기
- 다이나믹 프로그래밍
- 백준
- ☆
- Java개념
- 동적계획법
- 알고리즘공부
- 자바의정석연습문제풀이
- 알고리즘
- 브루트포스
- 시간 복잡도
- ★
- 백준9단계
- 백준알고리즘
- 무료개발강의
- 자바의정석
- Today
- Total
더 많이 실패하기
백준 2089번 -2진수 자바 Java (☆공부 253일차) 본문
2089 -2진수
https://www.acmicpc.net/problem/2089
2089번: -2진수
-2진법은 부호 없는 2진수로 표현이 된다. 2진법에서는 20, 21, 22, 23이 표현 되지만 -2진법에서는 (-2)0 = 1, (-2)1 = -2, (-2)2 = 4, (-2)3 = -8을 표현한다. 10진수로 1부터 표현하자면 1, 110, 111, 100, 101, 11010, 110
www.acmicpc.net
백준 2089번 문제 -2진수
문제
시간 제한 | 메모리 제한 | 제출 | 정답 | 맞힌 사람 | 정답 비율 |
---|---|---|---|---|---|
2 초 | 128 MB | 9794 | 4569 | 3748 | 45.663% |
문제
-2진법은 부호 없는 2진수로 표현이 된다. 2진법에서는 20, 21, 22, 23이 표현 되지만 -2진법에서는 (-2)0 = 1, (-2)1 = -2, (-2)2 = 4, (-2)3 = -8을 표현한다. 10진수로 1부터 표현하자면 1, 110, 111, 100, 101, 11010, 11011, 11000, 11001 등이다.
10진법의 수를 입력 받아서 -2진수를 출력하는 프로그램을 작성하시오.
입력
첫 줄에 10진법으로 표현된 수 N이 주어진다.
출력
-2진법 수를 출력한다.
제한
- -2,000,000,000 ≤ N ≤ 2,000,000,000
예제 입력 1
-13
예제 출력 1
110111
과정 생각해보기 & 오답
https://gimbalja.tistory.com/196
공부 114일차: 백준 2089번 -2진수 자바 java
2089 -2진수 https://www.acmicpc.net/problem/2089 2089번: -2진수 -2진법은 부호 없는 2진수로 표현이 된다. 2진법에서는 20, 21, 22, 23이 표현 되지만 -2진법에서는 (-2)0 = 1, (-2)1 = -2, (-2)2 = 4, (-2)3 = -8을 표현한다.
gimbalja.tistory.com
4달 전에 푼 문제

우선 -2진수를 구현하기 전에, 10진수를 2진수로 바꾸는 방법에 대해 알아봐야 한다
그림에서 보는 것처럼 주어진 10진수를 계속해서 2로 나눈 후, 몫이 2보다 작아지면 몫과 지금까지의 나머지를 순서대로 적는다
10진수를 8진수로 변환할 때도 주어진 10진수를 계속 8로 나눈다
즉, -2진수는 주어진 숫자를 계속 -2로 나누어야 한다는 소리가 된다

-2로 나누고 몫은 올림을 해야 하는데, 그림에서처럼 음수일 때는 올림을 해야 원하는 결과를 얻을 수 있기 때문이다
이렇게 몫과 나머지를 다 구한 후엔 2진수를 구하는 그림의 화살표처럼 뒤집어서 출력한다
정답 인정 코드
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Main{ public static void main(String[] args) throws IOException{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringBuilder sb = new StringBuilder(); int n = Integer.parseInt(br.readLine()); if(n == 0) { System.out.println(0); }else { while(n != 1) { sb.append(Math.abs(n % -2)); n = (int)Math.ceil((double)n/-2); // ★ } sb.append(n); System.out.println(sb.reverse()); } br.close(); } } | cs |
이것저것 찾아봤지만 현재 풀이가 가장 좋아보인다
'알고리즘 > 백준' 카테고리의 다른 글
백준 11005번 진법 변환 2 자바 Java (☆공부 255일차) (0) | 2023.04.11 |
---|---|
백준 17103번 골드바흐 파티션 자바 Java (☆공부 254일차) (0) | 2023.04.10 |
백준 1212번 8진수 2진수 자바 Java (☆공부 252일차) (0) | 2023.04.08 |
백준 1373번 2진수 8진수 자바 Java (☆공부 251일차) (0) | 2023.04.07 |
백준 17087번 숨바꼭질 6 자바 Java (☆공부 250일차) (0) | 2023.04.06 |