반응형
🔺 문제
코드트리 | 코딩테스트 준비를 위한 알고리즘 정석
국가대표가 만든 코딩 공부의 가이드북 코딩 왕초보부터 꿈의 직장 코테 합격까지, 국가대표가 엄선한 커리큘럼으로 준비해보세요.
www.codetree.ai
🔺 코드
- 코드 1)
: 오른쪽에서부터 왼쪽으로 오면서 해당 위치의 값이 1이면,
결과에 (2의 문자열 길이 - 현재 인덱스 - 1)승만큼 값을 더함
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
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();
int result = 0;
for(int i = num.length() - 1 ; i >= 0 ; i--) {
if(num.charAt(i) == '1')
result += Math.pow(2, num.length() - i - 1);
}
System.out.println(result);
}
}
|
cs |
- 코드 2)
: 왼쪽에서 오른쪽으로 진행하며 현재까지 변환한 십진수 값을 계속 갱신
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
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();
int[] binary = new int[num.length()];
for(int i = 0 ; i < num.length() ; i++) {
binary[i] = num.charAt(i) - '0';
}
int result = 0;
for(int i = 0 ; i < binary.length ; i++) {
result = result * 2 + binary[i]; // result : 0번 idx부터 i번 idx까지 10진법으로 변환한 값
}
System.out.println(result);
}
}
|
cs |
🔺 다른 풀이들
- 왼쪽에서 오른쪽 방향으로 한 칸씩 움직이며 진행하여 10진수 값 계속 갱신
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String binary = sc.next();
// 십진수로 변환
int num = 0;
for(int i = 0; i < binary.length(); i++)
num = num * 2 + (binary.charAt(i) - '0');
System.out.print(num);
}
}
💬 느낀 점
함수 안 쓰고 직접 구현하려니 쉬운 게 아니구나...
1회독 | 2회독 | 3회독 | 4회독 | 5회독 |
V |
반응형
'코테 > 코드트리' 카테고리의 다른 글
[코드트리/NOVICE MID] 2진수로 변환하기 (JAVA) (0) | 2023.09.28 |
---|---|
[코드트리/NOVICE MID] 십진수와 이진수 2 (JAVA) (0) | 2023.09.28 |
[코드트리/NOVICE MID] 요일 맞추기 (JAVA) (0) | 2023.09.28 |
[코드트리/INTERMEDIATE LOW] DateTime to DateTime (JAVA) (0) | 2023.09.28 |
[코드트리/INTERMEDIATE LOW] Date to Date (JAVA) (0) | 2023.09.28 |