본문 바로가기
algorithm/Baekjoon

[백준] 2908 상수

by 이쟝 2022. 10. 11.

문제

상근이의 동생 상수는 수학을 정말 못한다. 상수는 숫자를 읽는데 문제가 있다. 이렇게 수학을 못하는 상수를 위해서 상근이는 수의 크기를 비교하는 문제를 내주었다. 상근이는 세 자리 수 두 개를 칠판에 써주었다. 그 다음에 크기가 큰 수를 말해보라고 했다.

상수는 수를 다른 사람과 다르게 거꾸로 읽는다. 예를 들어, 734와 893을 칠판에 적었다면, 상수는 이 수를 437과 398로 읽는다. 따라서, 상수는 두 수중 큰 수인 437을 큰 수라고 말할 것이다.

두 수가 주어졌을 때, 상수의 대답을 출력하는 프로그램을 작성하시오.

입력

첫째 줄에 상근이가 칠판에 적은 두 수 A와 B가 주어진다. 두 수는 같지 않은 세 자리 수이며, 0이 포함되어 있지 않다.

출력

첫째 줄에 상수의 대답을 출력한다.

예제 입력 1 복사

734 893

예제 출력 1 복사

437

예제 입력 2 복사

221 231

예제 출력 2 복사

132

예제 입력 3 복사

839 237

예제 출력 3 복사

938

1. 문자열 거꾸로 뒤집는 알고리즘

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Main {

	public static void main(String[] args)throws IOException {
		// 1. 수를 거꾸로 읽는다.
		// 2. 두 수를 비교해서 큰 수를 출력
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st = new StringTokenizer(br.readLine()," ");

//		1) 문자열 뒤집는 알고리즘을 작성해서 사용
		int A = reverse(Integer.parseInt(st.nextToken()));
		int B = reverse(Integer.parseInt(st.nextToken()));
		System.out.println(A>B? A:B); // 삼항연산자 
	}
	
	// 받은 수를 거꾸로 뒤집는 알고리즘
	public static int reverse(int num) {
		int answer = 0;
		while(answer!=0) {
			answer = answer*10 + answer % 10;
			num /= 10;
		}
		return answer;
	}
}

2. StringBuilder의 reverse( ) 사용

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class String_2908 {

	public static void main(String[] args)throws IOException {
		// 1. 수를 거꾸로 읽는다.
		// 2. 두 수를 비교해서 큰 수를 출력		
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st = new StringTokenizer(br.readLine()," ");

//		2) StringBuilder의 reverse를 사용해서 거꾸로 뒤집음
		StringBuilder sbA = new StringBuilder(st.nextToken());
		StringBuilder sbB = new StringBuilder(st.nextToken());
		int A = Integer.parseInt(sbA.reverse().toString());
		int B = Integer.parseInt(sbB.reverse().toString());
		
		System.out.println(A>B? A:B); // 삼항연산자 
	}

}
  • if else로 된다면 삼항연산자로 깔끔하게 끝내기..!
  • 문자열 뒤에서 부터 읽을 때 알고리즘 작성하기(1) 아니면 StringBuilder의 reverse( )메서드 이용하기 둘 중하나로 사용하잣..!
  • 거꾸로 뒤집는 알고리즘은 두고두고 유용할 것 같아서 잘 생각해놓기!!!

'algorithm > Baekjoon' 카테고리의 다른 글

[11720] 숫자의 합  (0) 2023.04.30
[백준] 2750 수 정렬하기(Arrays.sort, 선택, 삽입, 퀵)  (0) 2022.10.13
[백준] 1157 단어 공부  (0) 2022.10.05
[백준] 2675 문자열 반복  (0) 2022.10.05
[백준] 10809 알파벳 찾기  (0) 2022.10.05