[java] 백준 1247번: 부호
문제
문제 출처 : https://www.acmicpc.net/problem/1247
N개의 정수가 주어지면, 이 정수들의 합 S의 부호를 구하는 프로그램을 작성하시오.
입력
총 3개의 테스트 셋이 주어진다. 각 테스트 셋의 첫째 줄에는 N(1 ≤ N ≤ 100,000)이 주어지고, 둘째 줄부터 N개의 줄에 걸쳐 각 정수가 주어진다. 주어지는 정수의 절댓값은 9223372036854775807보다 작거나 같다.
출력
총 3개의 줄에 걸쳐 각 테스트 셋에 대해 N개의 정수들의 합 S의 부호를 출력한다. S=0이면 “0”을, S>0이면 “+”를, S<0이면 “-“를 출력하면 된다.
JAVA 숙달기
1. BufferedReader
- java.io.BufferedReader 클래스.
- 데이터가 문자열로 저장되기 때문에 형변환이 필수적이다.
- 입력값이 엔터만 인식하기 때문에 한 라인에 여러가지를 입력하고 싶으면 stringtokenize.
- IOExeption(throws).
- 입력과 동시에 동기화.
- buffer 사이즈 8192.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.BufferedReader;
public class bufferedreader {
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
String S = br.readLine();
System.out.println(N);
System.out.println(S);
}
}
2. IOException
BufferedReader 예외 처리를 위해 사용
public static void main(String[] args) throws IOException
3. InputStreamReader
바이트 단위로 읽어 들이는 InputStream을 통해 입력을 받은 뒤, 문자 단위로 데이터를 변환시키는 중재자 역할을 하는 클래스
1
2
3
4
5
6
7
8
9
10
11
12
13
import java.io.InputStream;
import java.io.InputStreamReader;
public class StreamTest {
public static void main(String[] args) throws Exception {
InputStream in = System.in;
InputStreamReader reader = new InputStreamReader(in);
char[] a = new char[3];
reader.read(a);
System.out.println(a);
}
}
4. BigInteger
long long으로도 담을 수 없는 무한의 정수가 들어갈 가능성이 있다면 BigInteger을 사용한다.
코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.math.BigInteger;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
for(int i = 0; i < 3; i++) {
BigInteger S = new BigInteger("0");
int N = Integer.parseInt(br.readLine());
for(int j = 0; j < N; j++) {
BigInteger N2 = new BigInteger(br.readLine());
S = S.add(N2);
}
if(S.compareTo(BigInteger.ZERO) == -1) {
System.out.println("-");
}else if(S.compareTo(BigInteger.ZERO) == 1) {
System.out.println("+");
}else {
System.out.println(0);
}
}
}
}
후기
자바에 익숙하지 않다보니 아무래도 IO와 자료구조를 구현하는데 있어서 모르는 것이 아직은 너무 많다.
This post is licensed under CC BY 4.0 by the author.