본문 바로가기
ONLINE JUDGE/문자열

[백준2908] 상수

by W_W_Woody 2022. 3. 11.

https://www.acmicpc.net/problem/2908

 

2908번: 상수

상근이의 동생 상수는 수학을 정말 못한다. 상수는 숫자를 읽는데 문제가 있다. 이렇게 수학을 못하는 상수를 위해서 상근이는 수의 크기를 비교하는 문제를 내주었다. 상근이는 세 자리 수 두

www.acmicpc.net


방법1. 연산

package s07_string;

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

public class MJ_07_2908 {
	public static void main(String[] args) throws IOException{
		//입력받고 A B로 변수지정해놓고
		//거꾸로수를 크기비교후 A,B 중 출력
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st = new StringTokenizer(br.readLine()," ");
		
		int A = Integer.parseInt(st.nextToken());
		int B = Integer.parseInt(st.nextToken());
		
		int a = (A/100)+(((A%100)/10)*10)+((A%100)%10)*100;		
		int b = (B/100)+(((B%100)/10)*10)+((B%100)%10)*100;	
		
		if(a>b) {
			System.out.println(a);
		}else {
			System.out.println(b);
		}
	}
}

방법2. StringBuilder(),reverse() -Scanner

 StringBuilder 생성과 동시에 append() 라는 메소드에 값을 넣기 가능

이때 append() 로 넣어진 값은 타입이 StringBuilder 라는 타입으로 변환된다.

그리고 StringBuilder 타입을 문자열로 반환시키기 위해 toString() 을 써주고

Integer.parseInt() 로 String 을 int 로 타입을 변경시키면 끝이다.

package s07_string;

import java.io.IOException;
import java.util.Scanner;

public class MJ_07_2908_2 {
	public static void main(String[] args) throws IOException{
		
	Scanner in = new Scanner(System.in);
        
		int A = in.nextInt();
		int B = in.nextInt();
        
        in.close();
        
		A = Integer.parseInt(new StringBuilder().append(A).reverse().toString());
		B = Integer.parseInt(new StringBuilder().append(B).reverse().toString());
		
		System.out.print(A > B ? A : B);
	}
}

방법2-1. StringBuilder(),reverse() -BufferedReader

차이점은 append() 를 쓰지 않고 바로 객체생성할 때 문자열을 넣을 수 있다는 점이다.

( Scanner 을 사용했을 때는 int 타입으로 받았기 때문에 객체를 생성할 때 append() 메소드를 써야했지만 만약 넣어주려는 인자가 String 타입이면 append() 를 사용할 필요가 없다.)

package s07_string;

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

public class MJ_07_2908_3 {
	public static void main(String[] args) throws IOException{
		
		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.print(A > B ? A:B);
	}
}

if~else 안쓰고 삼항연산자로 출력가능

 

'ONLINE JUDGE > 문자열' 카테고리의 다른 글

[백준2941] 크로아티아 알파벳  (0) 2022.03.18
[백준5622] 다이얼  (0) 2022.03.18
[백준1152] 단어의 개수  (0) 2022.03.11
[백준1157] 단어 공부  (0) 2022.03.10
[백준2675] 문자열 반복  (0) 2022.03.09

댓글