Notice
Recent Posts
Recent Comments
Link
«   2025/07   »
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 29 30 31
Archives
Today
Total
관리 메뉴

Mintaka's log

[백준]10951번 본문

알고리즘

[백준]10951번

_해랑 2022. 5. 9. 20:00

https://www.acmicpc.net/problem/10951

 

10951번: A+B - 4

두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오.

www.acmicpc.net

 

종료시점을 명확히 해주지 않아 NoSuchElement 에러남.

Scanner를 사용했는데 데이터가 하나가 들어왔을 때가 있어서 발생했다고 떴다.

==>hasNextInt( ) 를 사용해서 종료시점 알 수 있도록 해줬다.

 


다른 코드를 보다보니 더 짧은 시간이 걸리는게 있었다.

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 NumberFormatException, IOException {
		
		StringTokenizer st = null;
		StringBuilder sb = new StringBuilder();
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		
		String str = "";
		int A = 0, B = 0;
        
		while((str = br.readLine()) != null) {
			st = new StringTokenizer(str);
			A = Integer.parseInt(st.nextToken());
			B = Integer.parseInt(st.nextToken());
			
			sb.append(A+B).append("\n");
		}
		
		System.out.println(sb);
	}
}

그리고 여기도 참고

https://st-lab.tistory.com/40

 

[백준] 10951번 : A+B - 4 - JAVA [자바]

https://www.acmicpc.net/problem/10951 10951번: A+B - 4 두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오. www.acmicpc.net 문제 간단한 문제지만 의외로 종료시점을 몰라 틀리는 경우들..

st-lab.tistory.com

  • BufferedReader과 Scanner의 차이
    • Scanner 
      • Scanner가 더 느리다고 한다
        • Scanner는 키보드 입력시 바로 한 자 한 자씩 전달되는 반면
        • BufferedReader는 입력시 버퍼로 이동, 버퍼가 다 차거나 개행문자 입력시 버퍼 내용을 한번에 전달하기 때문.
        • 키보드나 모니터 등의 데이터 입출력은 시간이 오래 걸림. 그래서 키보드 입력시마다 전달하는 것보다 한번에 묶어 보내는게 더 빠르다고.
      • Scanner는 따로 가공할 필요가 없다 => nextInt, nextString으로 받아오고자 하는 값의 자료형을 이미 지정해주었기 때문
      • 또 Scanner는 버퍼 사이즈가 1024라서 많은 입력을 필요로 할 경우 결과가 좋지 못하다고.
    • BufferedReader
      • 반면 BufferedReader는 String으로 값을 받아온다고 한다.
      • 동기화도 되어서 멀티쓰레드 환경에서 안전.

 

  • BufferedReader 사용방법
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String s = br.readLine();
  • 예외처리를 반드시 필요로 한다.
    • try/catch나 throws IOException

 

  • StringTokenizer
    • BufferedReader로 받아온 string 값을 가공할 때 사용한다고 한다.
      • nextToken( ) 메소드를 통해 입력 받은 값을 공백 기준으로 구분해 호출 가능.
    • String.split( ) 을 쓸수도 있다.

 

  • StringBuilder
    • string은 한 번 생성시 내용 바꿀 수 없음
    • StringBuilder는 가능
      • .append("문자열") 로 문자열 넣고
      • .toString( ) 으로 문자열 출력

'알고리즘' 카테고리의 다른 글

[백준] 10991- 아니 왜 안됨?-해결!  (0) 2022.05.24
[백준] 10818  (0) 2022.05.17
[백준] 1924번  (0) 2022.05.17
[JAVA]Scanner 사용 중 nextInt 다음 nextLine 사용시 에러  (0) 2022.05.12
[백준]10950번  (0) 2022.05.09