[B3] 백준 2588 곱셈 - Java
by Rev_https://www.acmicpc.net/problem/2588
2588번: 곱셈
첫째 줄부터 넷째 줄까지 차례대로 (3), (4), (5), (6)에 들어갈 값을 출력한다.
www.acmicpc.net
[풀이]
import java.util.Scanner;
// 곱셈
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int a = sc.nextInt(); // (1)
String b = sc.next(); // (2)
int[] bStr = new int[b.length()];
for (int i = 0; i < b.length(); i++) {
// 한 char 을 숫자로 바꿀때는 '1' - '0' 과 같이
// Ascii 의 차이값으로 구할 수 있다.
bStr[i] = b.charAt(i) - '0';
}
for (int i = 2; i >= 0; i--) {
System.out.println(bStr[i] * a);
}
int bInt = Integer.parseInt(b);
System.out.println(a * bInt);
}
}
두 수 a와 b를 입력 받고, a는 정수로 b는 문자열로 입력 받았다.
b는 각각의 자릿수를 분리하여 a와 곱해주었다.
그 중에 문자로 받은 bStr 배열을 다시 정수형으로 변환하는 과정이 필요했는데
char -> int로 바꿀 때는 '1' - '0' 과 같은 형식을 사용하여 Ascii의 차이값을 통한 변환을 사용하였다.
Char to Int : Ascii code 사용
컴퓨터는 문자를 기억할 수 없기 때문에 숫자 번호에 문자를 연결하여 기억한다.
문자 '0'의 아스키 코드는 48이고, 문자 '9'의 아스키 코드는 57이다.
char c1 = '9';
int i1 = c1 - '0'; // 57 - 48 = 9
따라서 위처럼 아스키 코드를 이용한 연산을 해버리면 char을 int로 변환한 것과 동일한 결과가 나오게 된다.
char c1 = '9';
Character.getNumericValue(c1) // 9
Character.getNumericValue()를 사용하는 방법도 있다.
[다른 풀이]
import java.util.Scanner;
// 곱셈
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int a = sc.nextInt(); // (1)
int b = sc.nextInt(); // (2)
System.out.println(b % 10 * a); // (3)
System.out.println(b % 100 / 10 * a); // (4)
System.out.println(b / 100 * a); // (5)
System.out.println(b * a); // (6)
}
}
단순한 자릿수 연산을 통하여 푸는 방법도 있다.
후자가 훨씬 간단할 것이라 생각했는데 생각보다 시간 차이는 얼마 없었다.
숏코딩을 보는데 Java 11에 비해 Java 8이 더 짧은 시간이 걸리더라.
왜일까....
자바 공부가 오랜만이라 좀 더 익숙해지기 위해 차근차근 문제를 푸는데 아직은 헷갈리는 부분이 많은 것 같다.
좀 더 익숙해지도록 노력하자!
[Reference]
https://frhyme.github.io/java/java_basic02_char_to_int/
Java - Char를 Int로 변환하기
Java - Char를 Int로 바꾸기
frhyme.github.io
'PS > PS' 카테고리의 다른 글
[S1] 백준 1149 RGB거리 - Java (0) | 2022.09.19 |
---|---|
[B4] 백준 11720 숫자의 합 - Java (0) | 2022.08.11 |
[S5] 백준 4673 셀프 넘버 - Java (0) | 2022.08.09 |
[B2] 백준 2577 숫자의 개수 - Java (0) | 2022.08.05 |
[B4] 백준 15552 빠른 A+B - Java (0) | 2022.08.03 |
블로그의 정보
Hi Rev
Rev_