BOJ 정답 비율: 60~65%
-
[BOJ/백준] 1550번 16진수 문제 풀이 (JAVA/자바)2022.03.17
[BOJ/백준] 1550번 16진수 문제 풀이 (JAVA/자바)
2022. 3. 17. 16:30
반응형
1. 문제 1550번 16진수 : 16진수의 개념을 알아야 되는 문제
이 문제를 풀면서 문제에 단위 테스트 코드를 적용해보았던 문제였다.
난이도 : 브론즈 V (solved.ac 티어)
16진수 단위 테스트 코드가 궁금하시면 아래 링크를 참조해주세요.
문제 링크 : https://www.acmicpc.net/problem/1550
2. 문제 풀이
제 풀이는 BufferedReader(입력)와 BufferedWriter(출력), 16진수 개념, 아스키 코드(char) 를 이해해야 됩니다.
BufferedReader(입력)와 BufferedWriter(출력)는 백준에서 풀이할때 Scanner와 System.out 보다 더 빠르게 입출력하기 위해 사용했습니다. 이 글에선 따로 설명하진 않겠습니다.
tenMultiply는 16진수 지수로 곱하기 위한 수이며
String.charAt(index) 는 index 별로 아스키코드값을 얻을 수 있습니다.
아스키코드 표를 보시면 49~57는 1~9 숫자값을 나타냅니다. 0은 따로 계산할 필요 없어서 포함시키지 않았습니다.
또한 문제에 나오는 65~70는 A~F 값을 나타냅니다.
이를 이용하여 yChar-48 = 1~9 , yChar-55 = 10~15 값을 나타냅니다.
3. 소스 코드 및 풀이 인증
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
32
33
34
35
36
|
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));
String y = br.readLine();
int yChar;
long sum = 0;
int tenMultiply;
for (int i = 0; i < y.length(); i++) {
yChar = y.charAt(i)-0;
tenMultiply=1;
for (int j = y.length()-1; j > i; j--) {
tenMultiply *= 16;
}
if(48 < yChar && yChar < 58) {
sum += (yChar-48) * tenMultiply;
}
else if(64 < yChar && yChar < 71) {
sum += (yChar-55) * tenMultiply;
}
}
bw.write(sum+"\n");
bw.flush();
bw.close();
}
}
|
cs |
반응형
'백준 문제 풀이(Java)' 카테고리의 다른 글
[BOJ/백준] 1550번 16진수 단위 테스크 코드 (JAVA/자바) (0) | 2022.03.17 |
---|---|
[BOJ/백준] 2557번 Hello World 문제 풀이 (JAVA/자바) (0) | 2021.12.22 |
[BOJ/백준] 1000번 A+B 문제 풀이 (JAVA/자바) (0) | 2021.12.22 |
[BOJ/백준] 1001번 A-B 문제 풀이 (JAVA/자바) (0) | 2021.12.22 |