충분히 쌓여가는
백준[Java] 1000번 A+B 본문
https://www.acmicpc.net/problem/1000
문제풀이 1
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();
System.out.println(A+B);
sc.close();
}
}
- 입력할 때 공백으로 값들이 입력된다.
- 자바에서 입력을 할 때 Scanner 클래스를 import 해줘야하기 때문에,
import java.util.Scanner;
- 대소문자를 주의하면서 Scanner 클래스를 import 해준다.
Scanner sc = new Scanner(System.in);
// Scanner 객체명 = new Scanner(System.in);
- 객체(Scanner)를 생성해줘야 함
- 객체명은 자유롭게 선언해주면되는데 보통 scan, sc, in을 주로 사용
- Scanner(System.in) 에서 System.in 은 입력한 값을 Byte 단위로 읽는 것
int A = sc.nextInt();
int B = sc.nextInt();
- 변수의 자료형에 맞게 입력을 한다
System.out.println(A + B);
- 출력문을 적어 문제 상황에 맞는 연산을 한다
sc.close();
- Scanner 사용이 끝나면 ?.close()를 사용해주기
- 위치는 입력값을 받고난 뒤면 어디에 있든 상관없음
- 맨밑에 적는이유는 이런 종료구문이나 객체 사용구문은 마지막에 한데 모아두는게 보기 용이하다는 점에서 Main 마지막에 적어준것
- close 메소드의 진짜 목적은 OS자원을 다시 되돌리는 것
- 사실 표준입출력은 닫지 않아도 됨
Streams have a BaseStream.close() method and implement AutoCloseable, but nearly all stream instances do not actually need to be closed after use. Generally, only streams whose source is an IO channel (such as those returned by Files.lines(Path, Charset)) will require closing. Most streams are backed by collections, arrays, or generating functions, which require no special resource management. (If a stream does require closing, it can be declared as a resource in a try-with-resources statement.)
문제풀이 2
BufferedReader
문자열을 받는 대표적인 방법: readLine() 과 read()
readLine(): 한 행을 읽어옴
read(): 한 문자만 읽어옴
그래서 특별한 경우가 없는 한 대부분 readLine() 사용
성능이 가장 좋음(문제풀이3번 split방법보다 코드 양이 길어지면 확연히 차이가 보임)
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));
String str = br.readLine(); // String 생성안하고 입력과 동시에 구분자로 분리해줘도 됨
StringTokenizer st = new StringTokenizer(str, " ");
int A = Integer.parseInt(st.nextToken());
int B = Integer.parseInt(st.nextToken());
System.out.println(A+B);
}
}
String str = br.readLine(); // String 생성안하고 입력과 동시에 구분자로 분리해줘도 됨
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
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());
System.out.println(A+B);
}
}
문제풀이 3
문자열을 다루게 되고 데이터 양이 많아지게 되면 StringTokenizer 보다 성능이 낮아 수행시간 차이가 발생함
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
// br.readline()를 통해 읽어온 것을 split("")하여 공백 단위로 나누어 준 뒤 String 배열에 각각 저장
public class _1000_4 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String[] str = br.readLine().split(" ");
int A = Integer.parseInt(str[0]);
int B = Integer.parseInt(str[1]);
System.out.println(A+B);
}
}
'IT > Java[백준]' 카테고리의 다른 글
백준[Java] 10998번 AXB (0) | 2023.02.12 |
---|---|
백준[Java] 1001번 A-B (0) | 2023.02.12 |
백준[Java] 2557번 Hello World(BufferedWriter) (2) | 2023.02.10 |
백준[Java] 25083번 새싹 (0) | 2023.01.03 |
백준[Java] 10172번 개 (0) | 2023.01.03 |