0%

[JAVA] 프로그래밍 대회에서 사용하는 자바 - 1

백준 강의 정리 - 입/출력

목차

  1. 입력받기
  2. 출력하기

1. 입력받기

1.1 Scanner

  • 입력을 편하게 받을 수 있다.
  • “next자료형”을 이용해서 입력을 받을 수 있다.
  • “hasNext자료형”을 이용해서 입력받을 수 있는 자료형이 있는지 구할 수 있다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import java.util.Scanner;

public class Main {

public static void main(String args[]){
Scanner sc = new Scanner(System.in);
int sum = 0;
while(sc.hasNextInt()) {
sum += sc.nextInt();
}
System.out.println(sum);

}

}

1.2 BufferedReader

  • Scanner는 느린 경우가 많아서, 입력이 많은 경우에는 BufferedReader를 사용하는 것이 좋다.
  • read와 readLine만 있기 때문에 정수는 파싱을 해야 한다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import java.io.*;

public class Main {

public static void main(String args[]) throws IOException{
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
String[] line = bf.readLine().split(" ");

String a = line[0] + line[1];
String b = line[2] + line[3];
// 문제 제한 때문에 결과값이 int의 범위를 넘어가게 돼서 long으로 형변환
long ans = Long.valueOf(a) + Long.valueOf(b);
System.out.println(ans);
}

}

1.3 StringTokenizer

  • 문자열을 토큰으로 잘라야 할 때 사용하면 편하다.
  • 어떤 문자열이 있을 때 공백이나 콤마 등으로 잘라야 할 때 좋다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
import java.io.*;
import java.util.*;

public class Main {

public static void main(String args[]) throws IOException{
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
String line = bf.readLine();

// 첫번째 인자는 무엇을 자를 것인지 결정
// 두번째 인자는 무엇을 기준으로 나눌 것인지 결정
StringTokenizer st = new StringTokenizer(line, ",");

int sum = 0;

// 토큰이 있는지 없는지를 확인
while (st.hasMoreTokens()) {
// 정수 형태로 형변환
sum += Integer.valueOf(st.nextToken());
}
System.out.println(sum);
}

}

2. 출력하기

2.1 print, println, printf

  • print
  • println
  • printf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public class Main {

public static void main(String args[]){
// 줄바꿈하지 않고 출력
System.out.print("Hello world");

// 줄바꿈해서 출력
System.out.println("Hello world");

// 출력 서식 + 출력할 내용
System.out.printf("%.3f", 1.234567f);

}

}

2.2 StringBuilder

  • 출력해야 할 것이 많은 경우에는 StringBuilder를 이용해 문자열을 만들고 출력하는 것이 좋다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public class Main {

public static void main(String args[]) {
Scanner sc = new Scanner(System.in);

int n = sc.nextInt();
StringBuilder sb = new StringBuilder();

for(int i=1; i<=n; i++) {
sb.append(i + "\n");
}
System.out.println(sb);
}

}