두 가지의 방법이 떠올랐다.
- 문자열로 입력 받아 charAt()으로 하나씩 분리하는 방법.
- 정수형으로 입력 받아 나머지, 나눗셈 연산을 통해 각 자리수를 구하여 쓰는 방법
✅ charAt()
이 풀이법에는 주의해야할 점이 있다. 바로 String 문자열에 문자가 저장될 때는 문자들이 모인 배열이라고 보고 인덱스를 참조해서 문자를 반환한다. 이때 반환되는 값은 아스키 코드값인 문자(char)이다.
String number = 123; 이 있고, number.chartAt(2);라고 하여 char 문자 ‘3’을 가지고 올 때, 그 값이 3이 아니라, 51이라는 값을 가지고 오게 됩니다. 이를 숫자로 변환하기 위해 '3'의 ASCII 값인 51에서 '0'의 ASCII 값인 48을 빼주면 결과적으로 3이 됩니다.
package level_01.num2588;
import java.util.Scanner;
public class IntCharAt {
// 문자열로 입력 받아 charAt()으로 분리하는 방법
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));
}
}
✅ 나머지, 나누기 연산
숫자로 받아서, 각각의 자리를 연산을 통해서 구하는 방법이다.
- 일의 자리
10으로 나머지 연산을 하면 1의 자리만 남는다.
123 % 10 = 3
- 십의 자리
- 100으로 나머지 연산하여 십과 일의 자리를 구한 후 10으로 나누기.
123 % 100 = 23 23 / 10 = 2
- 10으로 나눈 후 백과 십의 자리를 구하고 10으로 나머지 연산.
123 / 10 = 12 12 % 10 = 2
- 백의 자리
100으로 나누기.
123 / 100 = 1
- 100으로 나머지 연산하여 십과 일의 자리를 구한 후 10으로 나누기.
- 풀이
package level_01.num2588; import java.util.Scanner; public class Calculation { // 나머지, 나눗셈 연산을 사용하는 방법 public static void main(String[] args) { Scanner sc = new Scanner(System.in); int a = sc.nextInt(); int b = sc.nextInt(); int c = (b % 10) * a; int d = ((b % 100) / 10) * a; // == int d = ((b / 10) % 10) * a; int e = (b / 100) * a; System.out.println(c); System.out.println(d); System.out.println(e); System.out.println(a*b); } }
Uploaded by N2T