이 문제의 핵심은, 두번째 주어지는 정수를 분리해낼 수 있느냐...? 하는 것이다.
아 여러가지 방법이 있을 것 같지만 나는 일단 int로 정수를 받으면 아주 귀찮아질 것 같다는 확신이 강하게 들었다.
그래서 아예 두번째 수는 String으로 받기로 했다.
그리고 그 문자열을 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)));
sc.close();
}
}
첫번째 줄엔 a x b의 일의 자리,
두번째 줄엔 a x b의 십의 자리,
세번째 줄엔 a x b의 백의 자리,
네번째 줄엔 a x b를 출력하면 된다.
변수 b는 문자열이기 때문에 charAt()으로 잘라낼 수 있지만, 그 경우에 잘려진 조각은 겉보기엔 정수 같을지 모르나 사실 문자이다. 그래서 아스키 코드를 감안해서 생각을 해야한다.
아스키코드를 바탕으로 '1'은 49이다. '0'은 48이다.
아스키 코드를 다 외우진 못하지만 이런건 알고 있어야... '1'이 49, 'A'가 65, 'a'가 97 요정도...?
아무튼 그럼 문자 '1'을 정수 1로 만들고 싶으면...?
'1' - '0' 을 하게 되면 49 - 48이 됨으로 1이 나온다.
즉 문자에다가 -'0'을 하면 정수로 만들어버릴 수 있다.
하하 잘 아는척 하고 썼지만 사실 몰랐다...
반응형
'코딩테스트 > 알고리즘..을 하고 싶었던' 카테고리의 다른 글
[JAVA] 백준10828: 스택 (0) | 2024.11.13 |
---|---|
[JAVA] 백준10773: 제로 (1) | 2024.11.12 |
[JAVA] 백준2566: 최댓값 (0) | 2024.11.03 |
[JAVA] 백준1152: 단어의 개수 (0) | 2024.10.31 |
[JAVA] 백준10988: 팰린드롬인지 확인하기 (0) | 2024.10.31 |