[BaekJoon] 1330번 - 두 수 비교하기 (java)
1. 문제
👉 문제 바로가기
- 조건
시간 제한 | 메모리 제한 |
---|---|
1초 | 512MB |
- 문제
두 정수 A와 B가 주어졌을 때, A와 B를 비교하는 프로그램을 작성하시오.
- 입력
첫째 줄에 A와 B가 주어진다. A와 B는 공백 한 칸으로 구분되어져 있다.
- 출력
첫째 줄에 다음 세 가지 중 하나를 출력한다.
- A가 B보다 큰 경우에는 '>'를 출력한다.
- A가 B보다 작은 경우에는 '<'를 출력한다.
- A와 B가 같은 경우에는 '=='를 출력한다.
- 제한
-10,000 ≤ A, B ≤ 10,000
- 예제
입력 | 출력 |
---|---|
1 2 | < |
10 2 | > |
5 5 | == |
2. 풀이
'>'
, '<'
, '=='
3가지 중 1개를 출력하기 위해 조건문 if
를 사용한다.
또한 if 대신 삼항 연산자
를 사용해서 조건문을 한 줄로 줄이는 방법도 설명한다.
2가지 입력방법을 사용해서 결과를 출력한다.
- Scanner 클래스
- BufferedReader 클래스
- 1. Scanner 클래스 사용
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();
if(A > B){
System.out.println(">");
}else if(A < B){
System.out.println("<");
}else{
System.out.println("==");
}
}
}
위와같이 객체를 생성할 때, Scanner(System.in) 에서
System.in
은 입력한 값을Byte 단위
로 읽는 것을 뜻한다.
if 조건문
은 ( ) 안에 조건을 명시하고 { } 안에 조건에 따른 결과를 명시한다.
else if
를 사용해 2개 이상의 조건을 작성하고, 마지막은else
를 사용해 위의 모든 조건이 false 일 때 실행된다.
- 2. BufferedReader 클래스 사용
BufferedReader는 readLine()
메서드를 사용해 한 행을 전부 읽는다.
이를 공백단위로 분리해야 하는데, 두가지 분리 방법으로 문제를 풀어보자.
① StringTokenizer 클래스를 사용하여 분리해주는 방법
② split() 을 사용하는 방법
① StringTokenizer 클래스를 이용
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
import java.util.StringTokenizer;
public class Main{
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(st.nextToken());
int B = Integer.parseInt(st.nextToken());
if(A > B) System.out.println(">");
else if(A < B) System.out.println("<");
else System.out.println("==");
}
}
str.nextToken()
은 한 줄로 받은 데이터를 공백 단위로 끊어문자열로 반환
하기 때문에Integer.parseInt()
을 사용해int형으로 변환
시켜준다.
if 조건문의 연산이 1줄인 경우, { }를 생략할 수 있다.
② split() 을 사용
여기서 삼항 연산자도 함께 사용해보자.
변수 = (조건문) ? (true 인 경우 연산) : (false 인 경우 연산)
if 조건문보다 코드도 짧고 한 줄에 표현할 수 있어 가독성도 좋다.
조건이 2개 이상일 경우, 연산 위치에 또 다른 삼항 연산자를 쓸 수 있다.
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
public class Main{
public static void main(String[] args)throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String[] arr = br.readLine().split(" ");
int A = Integer.parseInt(arr[0]);
int B = Integer.parseInt(arr[1]);
String str = (A > B) ? ">" : ((A < B>) ? "<" : "==");
}
}
br.readLine() 을 통해 읽어온 문자열을
split(" ")
하여 공백 단위로 나눠준 뒤 String 배열에 순서대로 저장한다.
Integer.parseInt()
을 사용해 string 배열에 저장된 값을 각각int형으로 변환
시켜준다.
첫번째 조건
A > B 가 true
이면 > 를 변수 str 에 저장하고,false
면 다시 삼항 연산자로 체크한다.
두번째 조건A < B 가 true
이면 < 를 저장하고,false
면 == 를 저장한다.
BufferedReader 클래스
에 대해 더 알아보고 싶으면 여기를 클릭하면 된다.3. Scanner VS BufferedReader 성능 비교
입력의 경우 확실히 Scanner 보다는 BufferedReader 가 빠른 것을 볼 수 있다.
관련 페이지
Leave a comment