https://www.acmicpc.net/problem/30031
대한민국 지폐는 천 원권, 오천 원권, 만 원권, 오만 원권으로 총 네 종류가 있다. 각 지폐의 세로 길이는
로 모두 같지만, 가로 길이는 모두 다르다. 천 원권의 가로 길이는
, 오천 원권의 가로 길이는
, 만 원권의 가로 길이는
, 오만 원권의 가로 길이는
이다. 따라서 가로의 길이를 통해서 지폐의 종류를 구분할 수 있다.
수민이는 대한민국 지폐
장을 가지고 있다. 수민이는 종이의 크기를 재는 기계를 이용하여 각 지폐의 가로, 세로 길이를 알아냈다. 수민이가 가진 지폐의 총액을 구해보자.
첫째 줄에 정수
이 주어진다.
둘째 줄부터
개의 줄에 각 지폐의 가로, 세로 길이가 공백으로 구분되어
단위로 주어진다. 주어지는 지폐의 가로, 세로 길이의 길이는 정수이고 천 원권, 오천 원권, 만 원권, 오만 원권의 가로, 세로 길이 중 하나이다.
수민이가 가진 지폐의 총액을 출력한다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Num30031 {
static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
static StringTokenizer st;
static StringBuilder sb = new StringBuilder();
public static void main(String[] args) throws IOException {
int n = Integer.parseInt(br.readLine());
int sum = 0;
while(n--> 0){
st = new StringTokenizer(br.readLine());
int w = Integer.parseInt(st.nextToken());
if(w == 136){
sum += 1000;
} else if (w == 142) {
sum += 5000;
} else if (w == 148) {
sum += 10000;
} else if (w == 154) {
sum += 50000;
}
}
System.out.println(sum);
}
}
해당 문제에서 BufferedReader , StringTokenizer , StringBuilder 의 사용이유에 대해서 고민해보았다.
BufferedReader
: 입력을 버퍼링하여 한번의 여러문자를 읽기에 입력과 출력을 향상시킨다는 장점이 있다. 이러한 장점으로 시간을 단축하여 효율적으로 데이터를 처리할 수 있다.
StringTokenizer
: 문자열을 특정 구문자를 사용하여 구분지어서 토큰화한다.
토큰화를 통해서 입력 문자열을 구조화하여 데이터를 추출하는데 용이하다.
StringBuilder
: 문자열 연산을 효율적으로 처리한다.
문자열을 더하거나 수정할 경우 새로운 문자열을 사용하는것이 아닌 기존의 문자열을 사용함으로 성능이 향상된다.
이러한 특징에 따라서 반복적인 작업이 많은 경우에 유용하게 사용된다.