728x90
[접근 과정]
입력값 : -13
-13 / -2 = 몫 : 7 / 나머지 : 1 => {1}
7 / -2 = 몫 : -3 / 나머지 : 1 => {1,1}
-3 / -2 = 몫 : 2 / 나머지 : -1 => {1,1,1}
2 / -2 = 몫 : -1 / 나머지 : 0 => {1,1,1,0}
-1 / -2 = 몫 : 1 / 나머지 : 1 => {1,1,1,0,1,1}
문자열 거꾸로 변환 = > 110111
[ 110111 ]
위와 같이 순서대로 나머지의 절대값이 저장되는 구조이다.
이번엔 -15를 입력값으로 하는 연산 과정이다.
입력값 : -15
-15 / -2 = 몫 : 8 / 나머지 : 1 => {1}
8 / -2 = 몫 : -4 / 나머지 : 0 => {1,0}
-4 / -2 = 몫 : 2 / 나머지 : 0 => {1,0,0}
2 / -2 = 몫 : -1 / 나머지 : 0 => {1,0,0,0}
-1 / -2 = 몫 : 1 / 나머지 : 1 => {1,0,0,0,1,1}
문자열 거꾸로 변환 = > 110001
[ 110001 ]
아래는 음수로 나눗셈 연산을 하였을 때, 발생하는 몫과 나머지이다.
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
public class Main{
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
double N = -13;
bw.write(String.format("%.2f", N / -2) + "\n");
int a = -13;
bw.write(a / -2 + "\n");
bw.write(a % -2 + "\n");
bw.flush();
bw.close();
}
}
/*
6.50
6
-1
*/
소수형 변수 -13을 -2로 '/' 연산을 한 경우, 몫으로 6.50이 나온것을 볼 수 있다.
정수형 변수 -13을 -2로 '/' 연산을 한 경우, 몫으로 6이 나온 것으로 볼 수 있다.
그러나
위와 같이 몫은 7로 나와야 함으로, 소수형 변수 -13을 -2로 '/' 연산을 한 뒤에 반올림을 해야한다는 것을 알 수 있다.
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
public class Main{
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int N = Integer.parseInt(br.readLine());
StringBuilder sb = new StringBuilder();
if(N == 0){bw.write(0 + "\n");}
else {
while(N != 0){
// 나머지 절댓값 저장
sb.append(Math.abs(N % -2));
// 반올림 한 몫
N = (int)Math.ceil((double)N / -2);
}
}
// 거꾸로 변환한 문자열 출력
bw.write(sb.reverse().toString());
bw.flush();
bw.close();
}
}
728x90
'백준' 카테고리의 다른 글
[백준] 10816번 - 숫자 카드 2 (JAVA) (0) | 2023.02.04 |
---|---|
[백준] 큰 수 A + B (10757번 JAVA) (0) | 2023.01.10 |
[백준] 1929번 : 소수 구하기 (0) | 2023.01.02 |
[백준] 1018번 : 체스판 다시 칠하기 [자바 / JAVA] (0) | 2023.01.01 |
백준 - 음계 (2920번) JAVA (0) | 2022.12.28 |