[Java][BOJ] 곱셈

Ga02·2023년 8월 31일
0

BOJ

목록 보기
19/62

문제

(세 자리 수) × (세 자리 수)는 다음과 같은 과정을 통하여 이루어진다.

https://www.acmicpc.net/upload/images/f5NhGHVLM4Ix74DtJrwfC97KepPl27s%20(1).png

(1)과 (2)위치에 들어갈 세 자리 자연수가 주어질 때 (3), (4), (5), (6)위치에 들어갈 값을 구하는 프로그램을 작성하시오.

입력

첫째 줄에 (1)의 위치에 들어갈 세 자리 자연수가, 둘째 줄에 (2)의 위치에 들어갈 세자리 자연수가 주어진다.

출력

첫째 줄부터 넷째 줄까지 차례대로 (3), (4), (5), (6)에 들어갈 값을 출력한다.

예제입력1

472
385

예제출력1

2360
3776
1416
181720

My Solution

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));
		int A = Integer.parseInt(br.readLine());
		String B = br.readLine();
		char[] b = B.toCharArray();
		
		System.out.println(A*(b[2]-'0'));
		System.out.println(A*(b[1]-'0'));
		System.out.println(A*(b[0]-'0'));
		System.out.println(A*Integer.parseInt(B));

	}
}

👀 Comment

내가 풀고싶었던 방식이 있었는데 어떻게 코드를 작성해야 할지 감이 안와서 결국 구글링의 도움을 받아서 풀었다.

첫번째 숫자는 그냥 숫자로 받고, 두번째는 한자리씩 끊어서 받으면 될 것 같았는데 그걸 도저히 어떻게 해야하는지 내 생각으로는 split 밖에 안떠오르는데 구분할 기준이 없고 해서 정말 고민고민했다.

답은 일단 문자열로 받고 문자열을 문자의 배열로 나누기! 이것도 분명히 배운건디 그것도 완전 초반쯤에 배운건데 안쓰니까 까먹었다..
-’0’은 왜 해야하는건지도 의문이었는데(구글링 후 아스키코드 때문인가 싶었음) 내가 정리해둔 벨로그 보니 이것도 예전에 공부해서 작성해둔 내용이었다..^.^

공부 게으르게 하지 않기..ㅎㅎ

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));
		int A = Integer.parseInt(br.readLine());
		int B = Integer.parseInt(br.readLine());

		System.out.println((B%10)*A);
		System.out.println((B/10)%10*A);
		System.out.println((B/100)*A);
		System.out.println(A*B);
	}
}

이건 둘 다 숫자로 받고 사칙연산으로 푸는 방식! 두 방식 중 어느 것이 더 성능이 좋을지(메모리나 시간 면에서) 궁금해서 둘 다 제출해봤는데 비슷했음!

profile
IT꿈나무 댓츠미

0개의 댓글