문자 타입으로 입력 받은 숫자를 어떻게 쪼개어 사용할지가 핵심인 문제다.
charAt() 풀이
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int A = Integer.parseInt(br.readLine());
String Bstr = br.readLine();
int B = Integer.parseInt(Bstr);
StringBuilder sb = new StringBuilder();
sb.append(A*(Bstr.charAt(2)-'0')+"\n");
sb.append(A*(Bstr.charAt(1)-'0')+"\n");
sb.append(A*(Bstr.charAt(0)-'0')+"\n");
sb.append(A*B);
System.out.println(sb);
}
}
첫번째 숫자의 경우 통째로 계산하기 때문에 바로 int 값으로 받아주고
두번째 숫자의 경우는 각각 자리별로 나눠서 사용하기 때문에 일단 문자로 값을 받아준다.
그리고 charAt()을 이용하여 입력받은 숫자를 자리별로 쪼개고 그 숫자에서 반드시 '0' 을 빼줘야 한다.
이 문제의 경우 B=385인데 Bstr.charAt(idx) 의 경우 숫자 3, 8, 5가 나오지않고 문자 '3', '8', '5'에 해당되는 값이 나온다.
그러므로 charAt을 사용해 값을 구하는 경우 반드시 문자 '0' 또는 그에 해당하는 숫자 48을 빼줘야 한다.
나머지(%) 와 몫(/)을 구하는 연산 풀이
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int A = Integer.parseInt(br.readLine());
int B = Integer.parseInt(br.readLine());
br.close();
StringBuilder sb = new StringBuilder();
sb.append(A*(B%10)+"\n");
sb.append(A*(B%100/10)+"\n");
sb.append(A*(B/100)+"\n");
sb.append(A*B);
System.out.println(sb);
}
}
B의 1의 자릿수는 B를 10으로 나눈 나머지 값이고,
10의 자릿수는 B를 100으로 나눈 나머지를 10으로 나눈 몫이고,
100의 자릿수는 B를 100으로 나눈 몫이다.
toCharArray() 풀이
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int A = Integer.parseInt(br.readLine());
String B = br.readLine();
char[] b = B.toCharArray();
StringBuilder sb = new StringBuilder();
sb.append(A*(b[2]-'0')+"\n");
sb.append(A*(b[1]-'0')+"\n");
sb.append(A*(b[0]-'0')+"\n");
sb.append(A*Integer.parseInt(B));
System.out.println(sb);
}
}
문자열을 char 배열 형태로 전환하여 배열에서 꺼내어주는 방법이다.
이 문제의 경우 B만 쪼개어 쓰면 되는데 서로 다른 길이의 문자열을 쪼개어 사용하는 문제에서 유용하게 쓸수 있는 방법인것 같다.
'알고리즘 풀이' 카테고리의 다른 글
[백준]9498번:시험 성적 - java 풀이 (0) | 2023.03.25 |
---|---|
[백준]1330번: 두 수 비교하기 - java 풀이 (0) | 2023.03.25 |
[백준]10869번:사칙연산 - java 풀이 (0) | 2023.03.23 |
[백준]1001번: A-B - java 풀이 (0) | 2023.03.23 |
[백준]1000번: A+B - java 풀이 (0) | 2023.03.22 |