본문 바로가기

백준 알고리즘

백준 2588번 자바 JAVA 풀이

반응형

https://www.acmicpc.net/problem/2588

 

2588번: 곱셈

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

www.acmicpc.net



사칙연산 문제 중 유일한 브론즈3

기존 문제보다 조금 더 머리를 써야하는 것 같기도 하다.

 

중요한 것은

어떻게 둘째 줄 숫자 중 1의 자리수만, 10의 자리수만, 100의 자리수만 뽑아낼 수 있는지 이다.

나는 다른 메소드를 배우지 않아서 %나 /를 사용해 출력하려고 했다.

근데 유용한 메소드가 있어서 사용해보고 정리해 두려 한다.


1. charAt() 사용

String타입인 문자열을 char타입의 문자로 변환해주는 명령어

주로 Scanner과 함께 사용된다.

 

문자열에서 하나의 문자만 뽑아오는, 이 문제에 아주 적합한 java API이다.

괄호 안에 넣는 숫자에 따라 문자를 출력하는데, 맨 왼쪽부터 0, 1, 2,,, 이다.

'345'를 charAt(0)을 사용해 출력하면 3이 출력되고, charAt(2)를 사용하면 5가 출력된다.

 

String타입의 참조변수 뒤에 .을 입력하고 charAt('문자번호')을 입력하면 된다.

 

예를들어 '345'의 문자열을 문자들이 모인 배열이라고 보고 인덱스를 참조하여 해당 문자를 반환하는 것이다.

이때 반환되는 값은 아스키코드값인 문자 (char)이다.

charAt(0)을 사용해 출력한 값이 3이지만, 이는 문자의 3이지 숫자의 3이 아니다.

result=51이 저장된다는 것을 생각해야한다.

 

그래서 아래의 풀이에는 -'0'을 적음으로써 문자의 3이 아닌 숫자의 3으로 본다는 것을 표현한다.

 

import java.util.Scanner;
 
public class Main {
 
	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
 
		int A = in.nextInt();
		String B = in.next();
        
		in.close();
 
		System.out.println(A * (B.charAt(2) - '0'));
		System.out.println(A * (B.charAt(1) - '0'));
		System.out.println(A * (B.charAt(0) - '0'));
		System.out.println(A * Integer.parseInt(B));
 
	}
}

마지막에는 우리가 입력받은 문자열을 숫자로 바꿔주는 Integer.parseInt()을 사용해

문자열을 int형으로 바꿔주어 A와 곱해준 값을 출력하면 된다.


2. 수학적으로 접근한다.

 

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));
		System.out.println(a*(b%100/10));
		System.out.println(a*(b/100));
		System.out.println(a*b);

385 중 5만 출력하기 위해서는 b%10 을 하면 b를 10으로 나누고 나머지인 5가 출력될 것이다.

385에서 8을 출력하려면 b를 100으로 %하면 나머지가 85가 나오는데,

이것을 10으로 나누면 8.5가 나와 int 처리하면 8이 출력된다.

385에서 3을 출력하려면 b를 100으로 나누면 값이 3으로 나온다.

 

API를 모르더라도, 수학적으로 응용할 줄 알면 풀 수 있는 문제이다.

 

반응형

'백준 알고리즘' 카테고리의 다른 글

백준 10171번 자바 JAVA 풀이  (0) 2023.04.16
백준 11382번 자바 JAVA 풀이  (0) 2023.04.16
백준 10430번 자바 JAVA 풀이  (0) 2023.04.16
백준 18108번 자바 JAVA 풀이  (0) 2023.04.16
백준 10926번 자바 JAVA 풀이  (0) 2023.04.15