1. 문제
두 정수 A와 B가 주어졌을 때, A와 B를 비교하는 프로그램을 작성하시오.
https://www.acmicpc.net/problem/1330
2. 코드
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int A = scan.nextInt(); //정수를 입력받을 예정이고, 입력받은 정수는 변수 A에 저장
int B = scan.nextInt(); //정수를 입력받을 예정이고, 입력받은 정수는 변수 B에 저장
scan.close();
if (A > B)
System.out.println(">"); //만약 A가 B보다 크면 > 를 출력해라.
else if (A < B)
System.out.println("<"); //만약 A가 B보다 작으면 < 를 출력해라.
else
System.out.println("=="); //만약 A와 B가 같다면 == 을 출력해라
}
}
3. 풀이
Scanner와 if문에 대해 알아야 풀 수 있는 문제다.
<목차>
3-1. Scanner란?
3-2. next 메서드란?
3-2. if 문이란?
위의 목차에 맞게 풀이를 설명할 예정이다.
Scanner를 잘 모른다면 Scanner만,
if문을 잘 모른다면 if문 부분만 보면 될 거 같다.
3-1. Scanner란?
scanner는 키보드를 통해 입력받은 걸
정수 혹은 문자 형태로 반환해 주는 역할을 한다.
만약 숫자는 무조건 세모 형태 여야 하고,
문자는 무조건 네모 형태여야 하는 게 컴퓨터 세계의 규칙이라고 해보자.
내가 키보드를 통해 숫자 3을 입력했으면
Scanner아 숫자 3을 세모 형태로 바꿔준다.
문자 '안녕하세요.'를 입력하면 문자니까 네모 형태로 바꿔준다.
이렇게 해주는 이유는 컴퓨터의 특성 때문이다.
우리는 3을 보자마자 3은 정수다.
라는 게 바로 보이지만 컴퓨터는 그런 게 바로 보이지 않는다.
'3은 정수야'라고 알려줘야 하는데
이를 위해선 Scanner가 키보드를 통해 입력된 3을 정수 형태(세모)로 바꿔줘서
컴퓨터가 정수로 인식할 수 있게 해주는 것이다.
3-2. next 메서드란?
키보드를 통해 사용자가 문자나 숫자를 입력할 수 있도록 해주는 게 next 메서드다.
파이썬을 안다면 input 함수를 생각하면 된다.
input 함수를 모른다면 네X버 검색창이라고 생각하면 된다.
우리는 네X버 검색창에 숫자나 문자를 입력한다.
그렇게 사용자가 숫자나 문자를 입력할 수 있도록
만들어 주는 게 next 메서드다.
Scanner scan = new Scanner(System.in);
int A = scan.nextInt();
int B = scan.nextInt();
scan.close();
위에는 scanner 사용 예시다.
Scanner을 사용하기 위해선
총 3가지 절차를 거쳐야 한다.
1. 객체 생성
2. next 메서드 사용
3. close사용
우리가 반찬을 꺼내서 밥을 먹는 것과 비슷하다.
1. 객체 생성 = 반찬 뚜껑을 연다.
2. next 메서드 사용 = 반찬을 먹는다.
3. close 사용 = 반찬 뚜껑을 닫아준다.
위의 내용을 염두해 두고 한줄 씩 살펴보고자 한다.
Scanner scan = new Scanner(System.in);은
scanner 객체를 생성(반찬 뚜껑 열기)하는 것을 의미한다.
int A = scan.nextInt();에서
next메서드를 통해 키보드를 통한 입력이 가능하도록 해준다. = 반찬 먹기
반찬을 먹었으면 이제 뚜껑을 닫아줘야 한다.
scan.close를 사용해준다.
이렇게 비유가 아닌 scanner에 대해 구체적으로
알고 싶다면 아래 링크 글을 참고하는 걸 추천한다.
백준 10926번 문제를 풀이하면서 Scanner 클래스와
next 메서드에 대해 상세히 풀어서 작성한 글이다.
3-2. if문이란?
if문은 만약 ~ 한다면 ~해라는 뜻이다.
if (A > B)
System.out.println(">"); //만약 A가 B보다 크면 > 를 출력해라.
else if (A < B)
System.out.println("<"); //만약 A가 B보다 작으면 < 를 출력해라.
else
System.out.println("=="); //만약 A와 B가 같다면 == 을 출력해라
if (A > B)
System.out.prinln(">"); 는
만약 A가 B보다 크다면 > 를 출력하란 뜻이다.
내가 첫 번째로 30이란 숫자를 입력하면 A에는 30이 저장될 것이고
두 번째로 10을 입력하면 B에는 10이 저장될 것이다.
A와 B를 비교했을 때 A에 저장된 값이 더 크므로 > 이 출력된다.
else
System.out.println("==");는
A가 B보다 크지도 않고(if A > B), A가 B보다 작지도 않을 때(else if (A < B))
==이란 문자를 출력하세요, 이다.
즉 A가 B보다 크지도 않고, 작지도 않는 경우는
A와 B가 같은 경우를 뜻한다.
그렇기에 마지막은 A와 B가 같다면 ==을 출력하세요.라고 할 수 있다.
'IT > BaekJoon' 카테고리의 다른 글
[백준/JAVA] 2753 - 윤년 : 그래서 윤년이 뭘까? (0) | 2023.01.15 |
---|---|
[백준/JAVA] 9498 - 시험성적 (0) | 2023.01.14 |
[백준/JAVA] 2588번. 곱셈 문제 - charAt는 뭐고 왜 쓰는 걸까? (0) | 2023.01.01 |
[백준/JAVA] 3003번- 킹, 퀸, 룩, 비숍, 나이트, 폰 문제 (0) | 2023.01.01 |
[백준/JAVA] 10926번. ??! 문제 - Scanner 클래스와 Next 메소드 설명 (0) | 2022.11.20 |