본문 바로가기

Java/백준

백준 / 1330 두 수 비교하기

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

 

1330번: 두 수 비교하기

두 정수 A와 B가 주어졌을 때, A와 B를 비교하는 프로그램을 작성하시오.

www.acmicpc.net

 

두 정수 A 와 B 가 주어졌을때 어느수가 더 큰지 구별하는 코드를 짜는문제다

 

Scanner 를 사용하는 방법과 BufferedReader 를 사용하는 방법이 있다

 

첫번째 Scanner 를 사용하는 방법이다 

 

import java.util.Scanner;

public class Main {
	public static void main(String[]args) {		
		
		Scanner in = new Scanner(System.in);
		int a = in.nextInt();
		int b = in.nextInt();
		
		in.close();
		
		if(a>b) 
			System.out.print(">");
		
		else if(a<b)
			System.out.print("<");
		
		else
			System.out.print("==");
	}
}

 

기본적인 방법이다 

 

하지만 밑의 if 문을 삼항연산자를 사용해서 한줄로 줄일수 있다

 

변수 = (조건문) ? (true 일 때의 연산) : (false 일 때의 연산) ;

삼항연산자는 이런식으로 사용하는데 

 

System.out.print((a>b) ? ">" : ((a<b) ? "<" : "==") );

위의 설명을 토대로 문제에 적용해보면 이렇게된다

 

1. a>b 이 참이면 왼쪽의 ">" 가 출력되고 거짓이라면 오른쪽의 식이 계산된다

 

2. 오른쪽으로 넘어가서 a<b 가 참이면 "<" 가 출력되고 거짓이라면 "==" 가 출력된다

 

 

두번째 BufferedReader 를 사용하는 방법이다

 

이 방법은 readLine() 을 통해 입력을 받는다 

readLine() 은 한 행을 전부 읽기 때문에 공백 단위로 입력해 준 문자열을 공백단위로 분리해주어야 한다

 

문자열 분리방법에는 두가지가있다 

 1. StringTokenizer 클래스를 이용하여 분리해주는 방법

 2. split() 를 이용하는 방법

 

이것들을 사용할때는 자료형 타입에 주의해서 사용해야한다 

st.nextToken() 은 문자열을 반환해준다 Integer.parseInt() 를 사용해서 int 형으로 바꿔준다 

 

int 형으로 바꿔주지 않는다면 계산이 되지않고 문자열이 그대로 이어붙여져서 나온다

String number1 = new String("1234");
String number2 = new String("4321");
System.out.println(number1 + number2);

 

이렇게 예시를 들면 출력은 12344321 이렇게 붙어서 나오게된다 이걸 5555 가 나오게 하기위해

Integer.parseInt() 를 사용한다.

 

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

public class Main11{
	public static void main(String[] args)throws IOException{
		
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));   
		
		String str = br.readLine();
		StringTokenizer st = new StringTokenizer(str," ");
		int a = Integer.parseInt(st.nextToken());
		int b = Integer.parseInt(st.nextToken());
		
		System.out.println((a>b) ? ">" : ((a<b) ? "<" : "=="));
		
	}
}

간단히 설명을 하자면

 1. BufferedReader 를 선언해준다

 2. String str = br.readLine(); 으로 입력을 받아준다

 3. readLine(); 은 한 행을 전부 읽어오기때문에 문자열을 분리해줘야한다

 4. StringTokenizer st = new StringTokenizer(str," "); 를 사용해서 공백을 기준으로 분리시켜준다

 5. 자료형 타입을 변환해주어야 하기때문에 Integer.parseInt(); 를 사용해서 int 형식으로 변환시켜준다

 6. 삼항연산자를 사용해서 출력시켜준다

 

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

public class Main11{
	public static void main(String[] args)throws IOException{
		
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); /* 1 */
		
		String[] str = br.readLine().split(" ");
		int a = Integer.parseInt(str[0]);
		int b = Integer.parseInt(str[1]);
		
		System.out.println((a>b) ? ">" : ((a<b) ? "<" : "=="));
		
	}
}

다음은 split() 를 사용해서 문자열을 구분해주는 방법이다 

 

'Java > 백준' 카테고리의 다른 글

Python / 1654 랜선 자르기  (0) 2023.01.11
Python / 1010 다리놓기  (0) 2023.01.07
Python / 11866 요세푸스문제  (0) 2023.01.06
Python / 10866 덱  (0) 2023.01.06
백준 / 3052 나머지  (0) 2022.05.12