본문 바로가기
알고리즘 풀이

[백준]2588번: 곱셈 - java 풀이

by 코디드 2023. 3. 25.

문자 타입으로 입력 받은 숫자를 어떻게 쪼개어 사용할지가 핵심인 문제다.

 

 

 

 

charAt() 풀이

 

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

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());
		
		String Bstr = br.readLine();
		int B = Integer.parseInt(Bstr);
		
		StringBuilder sb = new StringBuilder();
		
		sb.append(A*(Bstr.charAt(2)-'0')+"\n");
		sb.append(A*(Bstr.charAt(1)-'0')+"\n");
		sb.append(A*(Bstr.charAt(0)-'0')+"\n");
		sb.append(A*B);
		
		System.out.println(sb);
		
	}
}

 

첫번째 숫자의 경우 통째로 계산하기 때문에 바로 int 값으로 받아주고

두번째 숫자의 경우는 각각 자리별로 나눠서 사용하기 때문에 일단 문자로 값을 받아준다.

그리고 charAt()을 이용하여 입력받은 숫자를 자리별로 쪼개고 그 숫자에서 반드시 '0' 을 빼줘야 한다.

 

이 문제의 경우 B=385인데 Bstr.charAt(idx) 의 경우 숫자 3, 8, 5가 나오지않고 문자 '3', '8', '5'에 해당되는 값이 나온다.

그러므로 charAt을 사용해 값을 구하는 경우 반드시 문자 '0' 또는 그에 해당하는 숫자 48을 빼줘야 한다.

 

 

 

 

 

 

나머지(%) 와 몫(/)을 구하는 연산 풀이

 

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

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);
	}
}

 

B의 1의 자릿수는 B를 10으로 나눈 나머지 값이고,

10의 자릿수는 B를 100으로 나눈 나머지를 10으로 나눈 몫이고,

100의 자릿수는 B를 100으로 나눈 몫이다.

 

 

 

 

 

 

toCharArray() 풀이

 

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

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());
		
		String B = br.readLine();
		
		char[] b = B.toCharArray();
		
		StringBuilder sb = new StringBuilder();
		
		sb.append(A*(b[2]-'0')+"\n");
		sb.append(A*(b[1]-'0')+"\n");
		sb.append(A*(b[0]-'0')+"\n");
		sb.append(A*Integer.parseInt(B));
		
		System.out.println(sb);
	
	}
}

 

문자열을 char 배열 형태로 전환하여 배열에서 꺼내어주는 방법이다.

이 문제의 경우 B만 쪼개어 쓰면 되는데 서로 다른 길이의 문자열을 쪼개어 사용하는 문제에서 유용하게 쓸수 있는 방법인것 같다.