728x90
반응형
https://www.acmicpc.net/problem/2908
문제 2908) 상수 문제
문제)
상근이의 동생 상수는 수학을 정말 못한다. 상수는 숫자를 읽는데 문제가 있다. 이렇게 수학을 못하는 상수를 위해서 상근이는 수의 크기를 비교하는 문제를 내주었다. 상근이는 세 자릿수 두 개를 칠판에 써주었다. 그다음에 크기가 큰 수를 말해보라고 했다.
상수는 수를 다른 사람과 다르게 거꾸로 읽는다. 예를 들어, 734와 893을 칠판에 적었다면, 상수는 이 수를 437과 398로 읽는다. 따라서, 상수는 두 수중 큰 수인 437을 큰 수라고 말할 것이다.
두 수가 주어졌을 때, 상수의 대답을 출력하는 프로그램을 작성하시오.
입력)
첫째 줄에 상근이가 칠판에 적은 두 수 A와 B가 주어진다. 두 수는 같지 않은 세 자리 수이며, 0이 포함되어 있지 않다.
출력)
첫째 줄에 상수의 대답을 출력한다.
NO | 예제 입력 | 예제 출력 |
1 | 734 893 | 437 |
2 | 221 231 | 132 |
3 | 839 237 | 938 |
정답 코드)
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();
int a1 = 0;
int b1 = 0;
for(int i=0; i < 3; i++) {
a1 += a % 10 * (int)Math.pow(10, 2-i);
b1 += b % 10 * (int)Math.pow(10, 2-i);
a /= 10;
b /= 10;
}
if(a1 > b1) {
System.out.println(a1);
} else {
System.out.println(b1);
}
}
}
변수 2개를 먼저 입력 받고 그 변수들이 거꾸로 값이 저장될 수 있도록 변수를 2개 더 지정합니다.
for문을 이용해서 해당 길이만큼 반복해서 변수들이 거꾸로 출력되도록 만듭니다.
결국 둘 중 더 큰 값이 출력되도록 합니다.
다른 코드 풀이 예시)
int num[] = new int[2];
for(int i=0; i<num.length; i++) {
String str = sc.next();
num[i] = (str.charAt(2) - '0') * 100 + (str.charAt(1) - '0') * 10
+ (str.charAt(0) - '0');
}
if(num[0] > num[1]) {
System.out.println(num[0]);
} else {
System.out.println(num[1]);
}
배열로 숫자 2개를 입력 받는 방을 만든 후 문자열을 입력받아 charAt이라는 함수로 각각의 자릿수를 받아와 출력하는 코드를 한 줄에 만들고 num 값에 숫자가 저장되도록 만듭니다.
여기서 '0'의 값을 빼준 이유는 charAt은 아스키 코드로 출력되기 때문에 0(48)을 빼 원하는 숫자의 값이 출력되도록 합니다.
최종적으로는 더 큰 수가 출력되도록 만듭니다.
이때 if문 대신 Math.max 값을 사용하면 둘 중 더 큰 수를 출력할 수도 있습니다.
이렇게 또 한 문제를 풀어보았습니다! 이번 건 좀 난이도가 낮았던 것 같네요!!
다른 문제도 풀어볼게요~!!
많은 분들의 피드백은 언제나 환영합니다! 많은 댓글 부탁드려요~~
728x90
반응형
'문제풀기 > 백준 문제풀이' 카테고리의 다른 글
[백준 문제 2525번] 오븐 시계 문제 (0) | 2023.01.14 |
---|---|
[백준 문제 1978번] 소수 찾기 문제 (0) | 2023.01.09 |
[백준 문제 4673번] 셀프 넘버 문제 (0) | 2023.01.07 |
[백준 문제 2839번] 설탕 배달 문제 (0) | 2023.01.07 |
[백준 문제 4344번] 평균은 넘겠지 문제 (0) | 2023.01.06 |