-
[Algorithm] 백준/Bronze/2908. 상수Algorithm/문제 풀이 2023. 4. 7. 10:29
하루입니다.
https://www.acmicpc.net/problem/2908
2908번: 상수
상근이의 동생 상수는 수학을 정말 못한다. 상수는 숫자를 읽는데 문제가 있다. 이렇게 수학을 못하는 상수를 위해서 상근이는 수의 크기를 비교하는 문제를 내주었다. 상근이는 세 자리 수 두
www.acmicpc.net
문제 자체는 어렵지 않다. 세자리 정수가 주어질 때, 1. 정수를 뒤집고 2. 큰 값을 찾아서 3. 출력하면 된다.
내가 푼 방식
- 내가 젤 조와하는 방식인 몫과 나머지를 사용햇다.
- 각 자리의 숫자를 구하고 거꾸로 100 10 0을 곱하는 방식을 사용했다.
- 숫자 두 개만 나와서 Math.max() 함수를 사용했다.
import java.io.*; import java.math.*; public class Main { public static void main(String args[]) throws Exception { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String[] arr = br.readLine().split(" "); int a1 = Integer.parseInt(arr[0]); int b1 = Integer.parseInt(arr[1]); int a2 = 0; int b2 = 0; int n1 = a1/100; int n2 = (a1 - (n1*100))/10; int n3 = (a1 - (n1*100))%10; a2 = (n3*100) + (n2*10) + n1; int n4 = b1/100; int n5 = (b1 - (n4*100))/10; int n6 = (b1 - (n4*100))%10; b2 = (n6*100) + (n5*10) + n4; System.out.println(Math.max(a2, b2)); } }
다른 방식 1. System.in.read() - 48 사용
- System.in.read()는 가장 원시적인 입력 방법이라고 한다.
- int를 반환하나, 말 그대로의 정수값이 아닌 해당 문자열의 아스키코드를 반환하는 것이기에 -48 혹은 -'0' 처리를 해야 한다.

import java.io.*; import java.math.*; public class Main { public static void main(String args[]) throws Exception { int a = 0; int b = 0; a += System.in.read()-48; a += (System.in.read()-48)*10; a += (System.in.read()-48)*100; System.in.read(); b += System.in.read()-48; b += (System.in.read()-48)*10; b += (System.in.read()-48)*100; System.out.println(Math.max(a, b)); } }
다른 방식 2. StringBuilder의 .reverse().toString() 사용
- StringBuilder의 reverse()를 사용하면 문자열을 뒤집을 수 있다.
- toString() 없이 사용하면 StringBuilder를 반환하기에 toString()처리를 해줘야 한다.
import java.io.*; import java.math.*; import java.util.*; public class Main { public static void main(String args[]) throws Exception { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st = new StringTokenizer(br.readLine()," "); int a = Integer.parseInt(new StringBuilder(st.nextToken()).reverse().toString()); int b = Integer.parseInt(new StringBuilder(st.nextToken()).reverse().toString()); System.out.println(Math.max(a, b)); } }
여담
방법이 많다! StringBuilder의 사용법을 잘 익혀야겠다.
오늘도 감사합니다!
저으 깃허브
'Algorithm > 문제 풀이' 카테고리의 다른 글
[Algorithm] Softeer/L1/근무 시간 (0) 2023.04.08 [Algorithm] 백준/Bronze/2798. 블랙잭 (0) 2023.04.07 [Algorithm] 백준/Bronze/2675. 문자열 반복 (getBytes()) (0) 2023.04.07 [Algorithm] 백준/Bronze/10757. 큰 수 A+B (BigInteger) (0) 2023.04.06 [Algorithm] 백준/Bronze/10809. 알파벳 찾기 (0) 2023.04.06