Rev Notebook

[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_

활동하기