# BufferedReader
[JAVA][백준15829] Long을 넘는 큰 숫자 담는 그릇
` 눈물의 똥꼬쇼로 12트만에 100점 Long 범위가 넘어가지 않도록 중간에 MOD 연산을 해주는게 포인트였다. 풀고 나서 알게 된 사실인데, BigInteger 메소드를 사용하면 무한히 숫자를 담을 수 있다고 한다. ` --- BufferedReader와 BigInteger을 사용한 코드 #출처 : https://comain.tistory.com/280 --- BufferedReader랑 BigInteger 둘다 메소드가 참 많구나...;; 공부해야겠다. 백준1271 참고
스트림(Stream) : 문자스트림 - BufferedReader & BufferedWriter 입출력 효율 높이기
📌 스트림(Stream) : 데이터가 이동하는 통로 분류 InputStream : 입력스트림 OutputStream : 출력스트림 데이터 종류에 따른 분류 바이트스트림 문자스트림 >✅ 수업예문 💻 code BufferdReader 과 BufferedWriter 은 보조스트림으로 단독으로 사용불가 각각 FileReader 과 FileWriter로 통로를 열어준 후 사용해야함 input을 String으로 받은 이유 : reader.readLine() readLine()는 한 줄씩 읽어옴 newLine() 는 줄바꿈 닫을 때는 BufferedWriter(OutputStream) 를 먼저 닫음

[BOJ] 10951 JAVA
문제 내 풀이 다른 풀이 정리 입력의 종료는 더이상 읽을 수 있는 데이터 (EOF) 가 없을 때 종료한다. 이 문제에서 가장 중요한 점이 파일 종료 조건이 없이 그냥 입력이 주어졌다는 것이다. 즉 입력에서 더이상의 읽을 수 있는 데이터가 존재하지 않을 때 반복문을 종료하라는 것이다. BufferedReader 의 경우 null 을 반환한다. 이 부분은 오히려 null 인지 아닌지만 조건문을 통해 구분해주면 되므로 쉽다. 참고로 BufferedReader로 null을 반환하기 위해서는 역시 EOF를 던져주어야 하기 때문에 ctrl + Z (윈도우)혹은 ctrl + D(리눅스)를 입력해야한다. 출처 https://st-lab.tistory.com/40

[BOJ] 2557
Hello World 문제 내 풀이 다른 풀이 문법 >BufferedWriter / BufferedReader Buffer에 있는 IO 클래스인데 이 클래스들은 데이터를 하나씩 읽어오는 것이 아니라 임시 공간(버퍼)에 저장해두었다가 한 번에 출력 또는 데이터를 보내는 방식 1000개의 데이터를 1개씩 보내는게 아니라 임시로 한 공간에 담아둔 뒤 한 번에 보내는 방법이니 당연 성능면에서 우수 >flush() 와 close() flush() : FileWriter 내부 버퍼의 내용을 파일에 writer한다. flush()를 호출하지 않는다면 내용이 버퍼에만 남고 파일에는 쓰이지 않는 상황이 나올 수 있다. 즉, 메소드는 버퍼에 데이터가 가득 차 있건 아니건, 버퍼에

[ JAVA ] BufferedReader , StringTokenizer, StringBuilder 을 사용하는 이유
BufferedReader, StringTokenizer 는 문자열로 활용하기 위하여 사용되며 Scanner를 사용하는 것보다 빠르다. 백준이나 인프런에 있는 알고리즘 문제를 풀면서 문자에 대한 입력을 처리할 때, 지금까지는 scanner 를 많이 사용했지만, 문제를 풀면서 시간초과 문제가 발생했고, scanner 대신 BufferedReader 를 사용하면 버퍼(Buffer)를 사용하여서 알고리즘 문제를 풀 때, 시간복잡도 효율성에서 유리하다는 사실을 알고 본격적으로 공부 시작 ! 1. 그렇다면 버퍼(Buffer) 는 무엇일까? 데이터를 한 곳에서 다른 한 곳으로 전송하는 동안 일시적으로 그 데이터를 보관하는 임시 메모리 영역 버퍼를 이용한 입력 : BufferedReader 버퍼를 이용한 출력 : BufferedWriter 
자바공부 5일차
pr10 문제 번호: 10807 >정수 N을 입력받고 N개의 길이만큼의 공간을 가지고 있는 배열을 생성한 후 정수를 입력받는다.그 후 정수 V를 입력받아 배열안에 V와 같은 정수가 몇개가 있는지 파악하는 문제이다. >1. 문제에서 원하는 대로 먼저 정수 N을 입력받는다. 그 후 배열을 생성하고 { readLine(), StringTokenizer, for문 }를(을) 사용하여 배열을 공백을 기준으로 하여 한 줄로 정수로 채워준다. 정수 V를 입력받고 V와 같은 정수가 얼마나 있는지 저장하기 위해 변수 count를 만들고 0값으로 초기화를 한다. { for문 }안에 { if문 }을 사용하여 배열에 같은 수가 있을 때 마다 count에 1씩 추가한다. >**{ StringTokenizer

자바공부 3일차
pr7 문제 유형: 별찍기 - 2 >pr6문제와 비슷한 별찍기 문제이다. 하지만 오른쪽 정렬이 되어있다는 작은 것이 되게 많은 생각을 하게 만드는 것 같다. >pr6문제를 풀 떄 첫 for문은 자리를 만들고 두번째 for문에서 문자를 찍는다.는 생각으로 풀었던 것을 기반으로 이번엔 공백과 문자를 같이 찍어내보자 생각했다. >그렇기에 이중for문에서 첫 for문은 N-i개의 공백을 만들어내고 두번째 for문은 공백보다 뒷 자리에 찍히도록 만들었다. pr8 문제 유형: A + B - 5 >0 - 0을 입력했을 때 입력값이 들어

자바공부 2일차
pr4 문제 유형: A + B - 7 >pr3 문제와 크게 다를게 없는 문제였다. 이번엔 출력에서 다른 문자들을 넣어서 출력해야 했다. { Case #(번호): (입력값의 합) }으로 출력값을 만들어냈다. pr5 문제 유형: A + B - 8 >pr4문제의 연장선이라고 생각한다. 이번엔 { Case #(번호): (입력값) + (입력값) = (입력값의 합) }으로 출력값을 만들어내야 한다. >처음 시도에는 pr4문제와 동일하지만 출력값의 뒷부분에 (입력값의 합)을 추가했었다. 하지만 { BufferedWriter }는 버퍼에

자바공부 1일차
pr1 문제 유형: A + B >처음 문제를 풀었을 당시에는 int 변수 = sc.nextInt(); 로 작성 했었지만 제출했지만 오답이였다. >오답의 이유는 문제에서 주어진 C의 범위가 10^12까지 이므로 int의 범위를 초과하기 때문이였다. 그렇기 때문에 int보다 표현범위가 더 큰 long을 사용해야 했다. pr2 문제 유형: 반복문 >4b

Java String I/O
목차 Java의 인코딩 Stream Buffer Scanner Java의 인코딩 한 잼민이가 나한테 왔다. 잼민이: Java 어플리케이션을 통해서 제가 입력한 문자열을 출력하고 싶어요 ! 나: 아 그래? 그럼 아래처럼 Java언어로 적어봐 br을 이용한 입출력 Scanner을 이용한 입출력 > 잼민이의 코드를 유심히 보다가 문득 이런 생각이 들었다. 그런데.. Java애플리케이션이 이렇게 Java언어로 작성된 코드를 어떻게 처리 할 수 있지?? 컴퓨터 이진코드
BufferedWriter/Reader, 부동소수점
BufferedWriter/Reader Codeup1084 문제에서 BufferedWriter를 써야만 통과할 수 있었는데 그 이유는 Scanner로는 출력속도가 느리기 때문이었다. 버퍼를 이용해서 읽고 쓰는 함수인 만큼 입출력의 효율이 비교적 훨씬 좋다. 예를 들면, 벽돌을 나르는데 Scanner는 한 개씩 들고 가는거라면 BufferedReader는 카트에 가득 담아서 한 번에 실어 나르는일과 같다. BufferedReader : 입력 받는다 like Scanner(System.in) BufferedWriter : 출력한다 like System.out.print() 왜 Buffered를 써야하는지 개념은 잘 이해했다. 아래는 백엔드 위키에서 작성된 정답 코드이다. 이 코드에서 궁금했던건 의 위치가 왜 k반복문 밖에 위치해야만 하는지가 궁금했다. 다른 위치에 써놓으면 속도문제로 통과하지 못했기 때문이다. 주말이라 멘토님이 안계셔서 디코로 원기

[자바] 입출력 완전 정리
자바의 입출력은 코딩테스트를 준비하는데 있어 자주 사용 되지만 공부할 필요성을 그만큼 자주 느끼는 파트이기도 하다. 매번 입출력을 위해 많은 객체를 생성하지만 이유도 모르고 선언하는 할 때마다 답답함을 느껴 본 글을 쓰게 되었다. 오늘 포스팅에서는 자바의 입력, 그 중에서도 [Scanner, InputStream, BufferedReader]에 대해 확실히 정리하고자 한다. > 본 글은 아래의 글을 인용하여 작성하였습니다. [출처: stranger's LAB, 자바- 입력 뜯어보기] (https://st-lab.tistory.com/41?category=830901) > 먼저 알아볼 것은 자바(Java)의 인코딩 방식이다. Java는 String을 처리할 때 내부(메모리 상)에서는 UTF-16 BE인코딩으로 문자열을 저장하고, 송수슨에서는 직렬화가 필요한 경우 변형된 UTF-8을 사용하여 문자열을 입/출력할 때에만 사용자가 지정한 인코딩 값 또는 운영체제의 기본 인코

백준 18870 Java
문제 처음 문제를 보고 이해하는데 오래걸렸다. 서로 다른 좌표의 개수와 같아야 한다. -> 압축한 배열과 기존 배열의 개수는 같아야 한다. 새로운 X값이 다른 X보다 커야한다. 결론 순위를 매겨야 한다. 답안제출 수를 입력받고 배열에 저장한다. 정렬된 배열을 따로 만들어서 HashMap에 순위를 저장한다. 기존 배열에 HashMap의 Key가 있다면 그 값을 StringBuilder에 저장한다. StringBuilder를 출력한다. 로직은 대충 구상했지만 언어를 바꾼지 얼마
Java InputStream
목적 Java에서 사용하는 InputStream, InputStreamReader, BufferedReader 의 차이와 사용 용도를 파악한다. Java InputStream Stream Stream은 마치 물이 연속적으로 흐르는 것과 같이 데이터가 연속적으로 존재한다는 것을 표현한 객체이다. 컴퓨터는 이진수로 이루어진 비트로 정보를 주고 받으며, 일반적으로 바이트코드(byte)로 데이터를 전달하기 때문에 스트림도 byte의 연속된 집합이라고 할 수 있다. 단일 방향으로 연속적으로 흘러간다. InputStream 바이트 기반 입력 스트림의 최상위 추상클래스다. (모든 바이트 기반 입력 스트림은 이 클래스를 상속받는다.) 파일 데이터를 읽거나 네트워크 소켓을 통해 데이터를 읽거나 키보드에서 입력한 데이터를 읽을 때 사용한다. InputStream은 읽기에 대한 다양한 추상 메소드를 정의해 두었다. InputStream의 추

[JAVA] 입출력 BufferedReader/BufferedWriter란?
우선 버퍼의 기본 개념을 숙지하자. 버퍼를 왜 사용하는가? 버퍼를 사용하지 않을 시 키보드에서 입력이 되는 동사애 입력이 동시에 전달 되는데 하드 디스크와 외부 장치와의 입출력은 시간이 꽤 걸리는 작업이다. 반면에 버퍼를 사용 시 CPU와 보조기억장치 사이에서 사용되는 임시 저장 공간에 저장 후 어느정도 버퍼가 차게 되면 외부장치에 쌓인 버퍼를 프로그램에 전달한다. 쉽게 말해서 여러번 왔다갔다 하는 것 보다 한번에 모아서 처리하는게 효율적이다. (+ 버퍼는 CPU 내부에 있는 캐시메모리 보다는 느리지만 보조 기억 장치보다 훨씬 빠른 주기억 장치(RAM) 를 이용합니다. 보조기억장치는 주기억장치의 버퍼로 마련해둔 공간에 데이터를 열심히 보내 쌓아 둡니다. CP
백준 [java] 13458 시험감독
이 문제에서 고려해야할 것은 세가지로 요약할 수 있다. Scanner vs BufferedReader -> 시간단축을 위해 문제 조건에 따른 자료형 크기 감독관수 최솟값을 구하는 알고리즘 1. Scanner vs BufferedReader -> 시간단축을 위해 System.in => 콘솔로부터 데이터를 입력받는데 사용 InputStreamReader => 바이트 기반 스트림을 문자기반스트림으로 연결 시켜둔다. BufferedReader => 버퍼를 이용해서 입출력의 효율을 높인다. StringTokenizer => String을 공백 단위로 끊어주는 class 2. 문제 조건에 따른 자료형 크기 먼저 출력할 정답인 필요한 감독수의 최솟값을 long타입으로 선언해 주었다. 왜 long type으로 선언해야할까? 예제를 다시보자 최대크기로 나올 수 있는 경우의 수를

11279번 (최대 힙)
나의 코드 최소 힙 문제와의 차이 이 문제는 Scanner쓰면 시간초과가 떠서 BufferedReader를 사용해야하고, 아래 부분만 변경됐다.
[Java] BufferedReader, StringTokenizer
코딩 테스트를 풀 땐 Scanner 보다 BufferedReader 더 효율적이라는데 이를 자세하게 알아봅시다. BufferedReader의 속도가 더 빠른 이유는 Buffer의 차이입니다. Scanner는 1kb의 buffer를 가진 반면, BufferedReader는 8kb의 buffer를 가집니다. 그래서 입력을 저장했다가 한 번에 전송할 수 있기 때문에 더 빠른 속도를 낼 수 있습니다. > scanner는 위와 같이 사용합니다. 공백 및 개행(줄 바꿈) 기준으로 읽기 때문에 여러 줄이나 띄어쓰기로 구분된 숫자가 입력되면 그 만큼 scan.nextInt()를 사용해서 입력을 받아야합니다. > BufferedReader는 위와 같이 사용합니다. 개행문자를 포함한 줄 단위로 입력받기 때문에 1 3 5 7 처럼 띄어쓰기된 숫자 배열도 그대로 입력받을 수 있습니다. 그렇기 때문에 위와 같이 띄어쓰기나 콤마(,)로 구분된 문자열을 분리하거나 특정 문자에