코테/코드트리
[코드트리/NOVICE MID] 십진수와 이진수 2 (JAVA)
imname1am
2023. 9. 28. 15:04
반응형
🔺 문제
코드트리 | 코딩테스트 준비를 위한 알고리즘 정석
국가대표가 만든 코딩 공부의 가이드북 코딩 왕초보부터 꿈의 직장 코테 합격까지, 국가대표가 엄선한 커리큘럼으로 준비해보세요.
www.codetree.ai
🔺 코드
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
|
import java.util.*;
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String num = br.readLine();
// 1. 이진수 -> 십진수로 바꾸기
int tmp = 0;
for(int i = 0 ; i < num.length() ; i++) {
if(num.charAt(i) == '1')
tmp += Math.pow(2, num.length() - i - 1);
}
// 2. 17배 하기
int seventeen = tmp * 17;
// 3. 다시 이진수로 나타내기
String str = Integer.toBinaryString(seventeen);
System.out.println(str);
}
}
|
cs |
🧩 해결 아이디어
• 시뮬레이션
🔺 다른 풀이들
import java.util.Scanner;
public class Main {
public static final int MAX_DIGIT = 20;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String binary = sc.next();
// 1. 십진수로 변환
int num = 0;
for(int i = 0; i < (int) binary.length(); i++)
num = num * 2 + (binary.charAt(i) - '0');
// 2. 십진수에 17을 곱하기
num *= 17;
// 3. 이진수로 변환
int[] digits = new int[MAX_DIGIT];
int cnt = 0;
while(true) {
if(num < 2) {
digits[cnt++] = num;
break;
}
digits[cnt++] = num % 2;
num /= 2;
}
// 배열의 순서를 뒤집어 이진수를 출력
for(int i = cnt - 1; i >= 0; i--)
System.out.print(digits[i]);
}
}
💬 느낀 점
정석으로 풀어야....... 더 도움이 될 듯 하다...ㅎ
1회독 | 2회독 | 3회독 | 4회독 | 5회독 |
V |
반응형