백준 기준으로 입출력을 연습해볼 수 있는 아주 간단한 문제들을 모아봤다.
프로그래머스 같은 플랫폼을 이용할 때는 함수 인자로 던져주기 때문에 입출력이 필요없지만,
백준에서는 입출력 함수를 뭐 쓰냐에 따라 실행 시간이 많이 달라지기도 한다 🙋♂️
문제 리스트
- 두 수 A,B를 입력받고 A+B를 출력하는 문제들
https://www.acmicpc.net/problem/1000
https://www.acmicpc.net/problem/2558
https://www.acmicpc.net/problem/10950
https://www.acmicpc.net/problem/10951
https://www.acmicpc.net/problem/10952
https://www.acmicpc.net/problem/10953
https://www.acmicpc.net/problem/11021
https://www.acmicpc.net/problem/11022
첫 번째 문제인 1000번 문제를 이용해서 예를 들어보자.
두 수를 입력받고 더한 값을 출력만 하면 된다.
Scanner
를 이용해서 입력받고 System.out.println()
을 이용해서 출력해보자.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int a, b;
a = scanner.nextInt();
b = scanner.nextInt();
System.out.println(a + b);
}
}
아주 간단한 코드인데, Scanner
를 이용해서 입력받는 건
생각보다 시간이 많이 걸린다.
입력 시간을 줄이려면 BufferedReader
를 이용하면 된다 !
똑같은 문제를 이번엔 BufferedReader
를 이용해서 풀어보자.
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);
}
}
A 와 B 가 공백을 기준으로 들어오기 때문에
한 라인의 문자열을 잘라서 사용하려면 StringTokenizer
를 이용하면 된다.
혹시 공백이 아니라 쉼표를 기준으로 숫자가 잘린다면
StringTokenizer
의 두 번째 인자로 “,”
를 넣어주면 된다.
아주 쉬운 문제를 푸는데 괜히 코드가 길어진 것 같지만..
어쨌든 이렇게 하면 입력시간을 많이 줄일 수 있다.
실제 실행시간을 보면..!
위가 BufferedReader
를 이용한 입력이고, 아래가 Scanner
를 이용한 입력 방식이다.
2배 가까이 차이가 난다 !
자바 말고 파이썬으로 확인해보자.
a, b = map(int, input().split())
print(a+b)
map()
과 split()
을 이용하면 공백을 기준으로 문자들을 잘라서 받아서,
바로 저렇게 숫자로 변환할 수 있다.
이건 일단 둘째 치고, 이렇게 기본 input()
함수로 받는 건
Java 에서 Scanner
를 이용해 받는 것과 비슷하다.
이번에도 입력시간을 줄여보자.
import sys
def input():
return sys.stdin.readline()
a, b = map(int, input().split())
print(a+b)
sys 모듈의 stdin.readline()
을 이용하면 똑같이 입력을 받으면서 시간을 줄일 수 있다.
나는 보통 함수로 정의해놓고 사용하는 편 🙋♂️
자바때보다 별 차이가 안 나는 것 같기도 ..
아무튼 이렇게 하면 입력 시간을 줄일 수 있다~!