하나로 입력된 문자(숫자)를 분리하여 연산할 수 있는지 확인하는 문제
두번째 세자리 수(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 |