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 |