▶ 문제
https://www.acmicpc.net/problem/2588
2588번: 곱셈
첫째 줄부터 넷째 줄까지 차례대로 (3), (4), (5), (6)에 들어갈 값을 출력한다.
www.acmicpc.net
▶ 설명
곱셈 과정까지도 출력을 해야하는 문제이다.
수학적으로 풀 수도 있고, 문자열 메소드를 이용해서 풀 수도 있다.
한번에 해결할 수 없어서 다른 테스트 코드를 참고했다. 약간 나에겐 까다로운 문제였다.
▶ 문제 풀이
🌱 풀이1. 수학적으로 풀기
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
public class Main{
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int a = Integer.parseInt(br.readLine());
int b = Integer.parseInt(br.readLine());
br.close();
StringBuilder sb = new StringBuilder();
sb.append(a*(b%10)+"\n");
sb.append(a*((b%100)/10)+"\n");
sb.append(a*(b/100)+"\n");
sb.append(a*b);
System.out.println(sb);
}
}
두번째로 입력받은 값의 자릿수 순서대로 첫번째 입력값과 곱하기를 진행하도록 한다.
예를 들어 472, 385라는 숫자를 입력받았다면,
출력 첫 줄엔 472*5, 둘째 줄엔 472*8, 셋째 줄엔 472*3이 와야 한다.
두번째 입력 값인 385의 1의자리, 10의 자리, 100의 자리를 각각 구하면
나머지는 쉽게 연산을 통해 구하고자 하는 출력 결과를 얻을 수 있다.
sb.append의 첫 주자는 a*(b%10) 으로 되어 있는데,
385의 첫째자리 수 5는 385를 10으로 나눴을 때 나머지 값이기 때문이다.
385의 둘째자리를 구하려면 385를 100으로 나눈 나머지 값인 85를 가지고 10으로 한 번 나눠주면 된다.
그래서 두번째 sb.append 의 인수로 a*((b%100)/10 가 올 수 있었던 것이다.
385의 100의 자리를 구하는 것도 385를 100으로 나누면 된다.
알고나면 단순한 원리인데 처음에 생각해내지 못한 게 그만큼 아쉬웠다.
🌱 풀이2. substring(int a, int b)
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws NumberFormatException, IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String text = br.readLine();
int A = Integer.parseInt(text);
String texts = br.readLine();
int one = Integer.parseInt(texts.substring(2, 3));
int two = Integer.parseInt(texts.substring(1, 2));
int three = Integer.parseInt(texts.substring(0, 1));
StringBuilder sb = new StringBuilder();
sb.append((A * one)+"\n");
sb.append((A * two)+"\n");
sb.append((A * three)+"\n");
sb.append(A * Integer.parseInt(texts));
System.out.println(sb);
}
}
▶ Log
728x90
반응형
'백준 알고리즘 > 입출력' 카테고리의 다른 글
백준 10430번 :: 나머지 (0) | 2022.05.15 |
---|---|
백준 18108번 :: 1998년생인 내가 태국에서는 2541년생?! (0) | 2022.05.14 |
백준 10926번 :: ??! (0) | 2022.05.14 |
백준 10869번 :: 사칙연산 (0) | 2022.05.14 |
백준 1001번 :: A-B (0) | 2022.05.14 |