본문 바로가기
알고리즘/백준

[Java] 2558번 : 곱셈

by 자연송어 2021. 5. 20.

하나로 입력된 문자(숫자)를 분리하여 연산할 수 있는지 확인하는 문제

 

두번째 세자리 수(385)를 문자열로 변환하고

1, 10, 100의 자리의 수를 각각 첫번째 세자리 수(472)와 곱한 값을

(3),(4),(5)에 출력하고 정상적으로 곱셈을 한 내용을 (6)에 출력하면 된다.

 

정수를 변환하는 일반적인 방법

1. toString () 메소드

Integer.toString(123)
Integer i = 123;

i.toString();

객체가 가지고 있는 정보나 값들을 문자열로 만들어 리턴하는 메소드

 

2. charAt () 메소드

 

- str 에 문자열 abcdef 가 저장되어있을 때

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

- 반환되는 값은 아스키코드값인 문자 (char)임.

아스키코드란 쉽게 말해 문자를 숫자로 표현할 수 있는 방법

사용예제

public class Main {
	public static void main(String[] args) {
    	
        String a = "가나다라마바사";  // 인덱스 범위 0-6
        char data = a.charAt(3); // 인덱스 3으로 "라" 출력
        
        System.out.println(data);
        }
       }

- a에 문자를 저장하고 해당하는 문장 위치의 문자를 charAt으로 불러옴. 

 

 

정답🙋‍♂️

import java.util.Scanner;
 
public class Main {
 
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
 
		int A = sc.nextInt();
		String B = sc.next();
       
		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));
	}
}

String num = 345; 가 있다고 하자.

int result = num.charAt(0);라고 하면 result = 3 으로 착각할 수 있으나 실은 문자의 '3' 이지 숫자 3 이 아니다.

즉, result = 51 이 저장되는 것이다.

 

문자열 인덱스를 참조한 뒤 -'0' 을 해주는 이유

우리가 문자로 저장된 숫자가 아닌 우리가 보는 숫자 그대로의 값을 쓰기 위한 것.

 

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

- 수학적으로 접근하여 문제를 푸는 방법이라고 함.

- B%10 = 1의 자리

- B/100 = 10의 자리

- B%100/10 = 100의 자리

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

[Java] for문 - N찍기 (2741번)  (0) 2021.06.20
[Java] for문 - 구구단 - 2739번  (0) 2021.06.20
[Java] 1330번 : 두 수 비교하기  (0) 2021.05.20
[Java] 10171번 : 고양이  (0) 2021.05.19