알고리즘/백준 JAVA
[JAVA] 백준 코딩테스트 1.입출력과 사칙연산 2588: 곱셈
이오와이
2023. 8. 31. 14:01
곱셈을 풀어보도록 하겠습니다.
지금까지 풀어왔던 곱셈과는 조금 다른 모양일 수 있습니다.
정수형 A와 B가 모두 세 자릿수이며, B의 일의 자리, 십의자리, 백의자리 각각 곱한 값과 모두 곱한 값을 구하는 문제입니다.
문자열이 아닌 정수형이니 charAt()같은 매서드 없이 사칙연산으로 하나씩 쪼개며 곱하면 됩니다.
개념 설명
세 자리 정수를 하나씩 쪼개보도록 하겠습니다.
예를 들어 n의 값이 123이라고 가정합니다.
1 / 2 / 3 이렇게 각각 숫자를 하나씩 쪼개려면 나눗셈이 가장 적합해 보입니다.
123을 10으로 나누었을 때 나머지는 3입니다.
System.out.println(B%10); = 3(일의 자리)
123을 100으로 나누었을 때 몫은 1, 나머지는 23입니다.
System.out.println(B/100); = 1(백의자리)
나머지 23을 10으로 나누었을 때 몫은 2입니다.
System.out.println(B%100/10); = 2(십의 자리)
2588: 곱셈
코드로 정리해 봅니다.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int A = sc.nextInt();
int B = sc.nextInt();
sc.close();
System.out.println(A*(B%10)); //일의 자리
System.out.println(A*(B%100/10)); //십의 자리
System.out.println(A*(B/100)); //백의 자리
System.out.println(A*B);
}
}
십의 자리에 대한 고민이 조금 있을 수 있습니다.
처음에는 긴 풀이가 나왔어요.
System.out.println(A*((B/10)-(B/100)*10));
이렇게 작성하였는데, 비효율적이라는 생각이 들어 수정할 수 있었습니다.
System.out.println(B%100/10);
어떤 방법으로든 풀이는 맞으니 상관없다고 생각합니다.