[백준/JAVA] 버퍼입출력 BufferedReader/BufferedWriter
#15552 빠른 A+B 15552번: 빠른 A+B 첫 줄에 테스트케이스의 개수 T가 주어진다. T는 최대 1,000,000이다. 다음 T줄에는 각각 두 정수 A와 B가 주어진다. A와 B는 1 이상, 1,000 이하이다. www.acmicpc.net Scanner/ System.out.println 말고 BufferedReader/BufferedWriter 사용 ! Scanner/ System.out.println VS BufferedReader/BufferedWriter - 키보드의 입력이 키를 누르는 즉시 프로그램으로 바로 전달됨 - 키보드의 입력이 있을 때마다 한 문자씩 버퍼로 전송함 - 버퍼가 가득 차거나, 개행 문자가 나타나면, 버퍼의 내용을 한 번에 전송함 버퍼에 모아뒀다가 한 번에 전송하는..
2022.06.08
[swea/python] #9997 #10032 #10059 #10505 #10200
#9997 미니멀리즘 시계 SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 시간 = 각도 / 30 분 = int(각도%30) * 2 T=int(input()) for tc in range(1,T+1): angle=int(input()) hour =int(angle/30) minut = int(angle%30)*2 print(f'#{tc} {hour} {minut}') #10032 과자분배 SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com N개의 과자 % K 명 == 0 이면 공평하게 나뉨 N개의 과자 % K 명 > 0 ..
2022.04.27
[swea/python] #10570 제곱 팰린드롬 수
https://swexpertacademy.com/main/code/problem/problemDetail.do?problemLevel=1&problemLevel=2&problemLevel=3&contestProbId=AXO72aaqPrcDFAXS&categoryId=AXO72aaqPrcDFAXS&categoryType=CODE&problemTitle=&orderBy=FIRST_REG_DATETIME&selectCodeLang=ALL&select-1=3&pageSize=10&pageIndex=3 SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 1. 숫자의 맨 앞과 맨 뒤가 같은 수인지 2. 제곱근 값이 int ..
2022.04.26

#15552 빠른 A+B

 

15552번: 빠른 A+B

첫 줄에 테스트케이스의 개수 T가 주어진다. T는 최대 1,000,000이다. 다음 T줄에는 각각 두 정수 A와 B가 주어진다. A와 B는 1 이상, 1,000 이하이다.

www.acmicpc.net

Scanner/ System.out.println 말고 BufferedReader/BufferedWriter 사용 !

 

Scanner/ System.out.println VS BufferedReader/BufferedWriter

<버퍼를 사용하지 않는 입력 : Scanner/ System.out.println >

- 키보드의 입력이 키를 누르는 즉시 프로그램으로 바로 전달됨

 

<버퍼를 사용하는 입력 : BufferedReader/BufferedWriter >

- 키보드의 입력이 있을 때마다 한 문자씩 버퍼로 전송함

- 버퍼가 가득 차거나, 개행 문자가 나타나면, 버퍼의 내용을 한 번에 전송함

 

버퍼에 모아뒀다가 한 번에 전송하는 게 효율적 

 

☼ 버퍼(Buffer)

- 데이터를 한 곳에서 다른 한 곳으로 전송하는 동안 일시적으로 그 데이터를 보관하는 임시 메모리 영역

- 입출력 속도 향상을 위해 사용

 

☼ BufferedReader 사용방법

import java.util.*;
import java.io.*;

public class Main {

	public static void main(String[] args) throws Exception{
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
		StringTokenizer st;
		
		int T = Integer.parseInt(br.readLine()); //BufferedReader 타입 고정 : String  ➜  Integer.parselnt 통해 int 형 변환 
		
		for(int i=0;i<T;i++) {
			st = new StringTokenizer(br.readLine()," "); //StringTokenizer 생성과 동시 문자 입력
			
			int a = Integer.parseInt(st.nextToken()); //StringTokenzier 토큰을 반환되는 타입 : String  ➜  Integer.parselnt 통해 int 형 변환 
			int b = Integer.parseInt(st.nextToken());
			int sum = a+b;
			
			bw.write(sum+"\n"); // 출력 스트림 출력
		}
		br.close();
		bw.flush(); //버퍼 비우기
		bw.close(); //버퍼 닫기
	}

}

new InputStreamReader(System.in) 

키보드에서 입력 받기 위해 표준 입력 스트림(System.in)과 InputStreamReader 스트림 객체 연결

BufferedReader br

➜ br에 연결되는 문자입력 버퍼스트림 생성

 - 개행문자만 경계로 인식

 - readLine() 메서드로 입력 

 - 입력 받은 데이터 String 고정

 - 동기화되어 멀티스레드 환경에서 안전

 - 예외 처리 필수 , readLine() 마다 try/catch문으로 감싸주거나 throws IOException을 통해 처리한다.

BufferedWriter bw

➜ bw에 연결되는 문자출력 버퍼스트림 생성

readLine

➜ 스트림으로부터 한 줄을 읽어 문자열로 리턴

StringTokenzier

➜ 우리가 지정한 구분자로 문자열 분리

Integer.parselnt

 - String 타입 숫자   int 타입 숫자 (변환)

 - Char At() 과의 차이 ?

 

 

🙋 질문 ➜ 🙆

🙋: 위에 작성한 소스코드와 동일하게 이클립스 컴파일했는데 똑같은 오류 반복

구글링을 통해 Project 항목 > Clean 했음에도 불구하고 오류 반복해서 

새 프로젝트를 만들어 실행했더니 컴파일 성공했다.

어디에서 왜 오류가 난걸까?

🙆 : 괄호가 짝이 맞는지 살펴보자 

 

 

 

 

📮개인 공부를 위한 공간으로 틀린 부분이 있을 수도 있습니다.📮

문제점 및 수정 사항이 있을 시, 언제든지 댓글로 피드백 주시기 바랍니다.

 

 

 

 

[참고]

 

[Java 자바 입출력] BufferedReader/BufferedWriter

[자바 입출력 함수] BufferedReader / BufferWriter BufferedReader/BufferedWriter은 이름처럼 버퍼를 이용해서 읽고 쓰는 함수입니다. 이 함수는 버퍼를 이용하기 때문에 이 함수를 이용하면 입출력의 효율이..

jhnyang.tistory.com

 

[자바/JAVA] StringTokenizer를 이용해 문자열을 쪼개보자

StringTokenizer StringTokenizer 클래스는 문자열을 우리가 지정한 구분자로 문자열을 쪼개주는 클래스입니다. 그렇게 쪼개어진 문자열을 우리는 토큰(token)이라고 부릅니다. StringTokenizer를 사용하기 위

reakwon.tistory.com

 

[백준] 15552번 : 빠른 A+B - JAVA [자바]

https://www.acmicpc.net/problem/15552 15552번: 빠른 A+B 첫 줄에 테스트케이스의 개수 T가 주어진다. T는 최대 1,000,000이다. 다음 T줄에는 각각 두 정수 A와 B가 주어진다. A와 B는 1 이상, 1,000 이하이다...

st-lab.tistory.com

 

[JAVA] 백준 15552번 - 빠른 A+B

<코드> import java.io.*; public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); BufferedWriter bw..

cocoon1787.tistory.com

 

BufferedReader, BufferedWriter

1. Scanner - 띄어쓰기와 개행문자를 경계로 하여 입력 값을 인식한다. - 원하는 타입의 입력을 받을 수 있기 때문에 따로 가공할 필요가 없다. - 버퍼 사이즈가 1024 char이기 때문에 많은 입력을 필요

kmkunk.tistory.com

 

'JAVA' 카테고리의 다른 글

[백준/JAVA] EOF(End Of File)  (0) 2022.06.09

#9997 미니멀리즘 시계

 

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

 

  • 시간 = 각도 / 30
  • 분 = int(각도%30) * 2

 

T=int(input())
for tc in range(1,T+1):
    angle=int(input())
    hour =int(angle/30)
    minut = int(angle%30)*2
    print(f'#{tc} {hour} {minut}')

 

 

 

#10032 과자분배

 

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

 

 

  • N개의 과자 % K 명 == 0 이면 공평하게 나뉨
  • N개의 과자 % K 명 > 0 이면, N을 K개 만큼 공평하게 나누다 남은 개수 = (가장 많이 받은 사람 - 가장 적게 받은 사람)의 최솟값

 

T=int(input())
for tc in range(1,T+1):
    N,K=map(int,input().split())
    
    print(f'#{tc}', end=' ')
    if N % K == 0:
        print(0)
    else:
        print(N%K)

 

 

#10059 유효기간

 

 

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

 

  • 슬라이싱 이용
  • 1<=MM<=12
  • YY == 00 일 경우 포함 

 

T= int(input())
for tc in range(1,T+1):
    num=input()
    
    print(f'#{tc}',end=' ')
    if (int(num[0:2])>= 1 and int(num[0:2]) <=12) and ( int(num[2:]) >=1 and int(num[2:]) <=12):
        print('AMBIGUOUS')
    elif (int(num[0:2]) >= 1 and int(num[0:2]) <=12) and (int(num[2:]) > 12) or num[2:] == '00':
        print('MMYY')
    elif (int(num[0:2])> 12) or num[0:2] =='00' and (int(num[2:]) >= 1 and int(num[2:]) <=12):
        print("YYMM")
    elif (int(num[0:2])) >12  and (int(num[2:])>12):
        print("NA")

 

 

 

#10505 소득 불균형

 

 

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

 

 

  • 평균 값보다 작으면 cnt +1
  • N번 길이보다 num길이가 크면 break

 

T=int(input())
for tc in range(1,T+1):
    N=int(input())
    num = list(map(int,input().split()))
    cnt=0

    if len(num) > N:
        break

    else:
        for n in num:
            if n <= int(sum(num)/N):
                cnt+=1
            else:
                continue
    print(f'#{tc} {cnt}')

 

 

 

 

#10200 구독자 전쟁

 

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

 

  • A,B 중 작은 수 = 둘 다 구독할 경우의 최댓값
  • 최솟값 ) A+B >N 경우, (A+B)-N
  • 최솟값 ) A+B <N 경우, 0

 

 

T = int(input())
for tc in range(1,T+1):
    n,a,b=map(int,input().split())

    max_sub=0
    min_sub=0
    if a>n and b>n:
        break
    else:
        if a > b:
            max_sub =b
        else :
            max_sub=a

        if a+b>n:
            min_sub=(a+b)-n
        else:
            min_sub=0
    print(f'#{tc} {max_sub} {min_sub}')

 

 

 

📮개인 공부를 위한 공간으로 틀린 부분이 있을 수도 있습니다.📮

문제점 및 수정 사항이 있을 시, 언제든지 댓글로 피드백 주시기 바랍니다.

'algorithm > swea' 카테고리의 다른 글

[swea/python] #10570 제곱 팰린드롬 수  (0) 2022.04.26

https://swexpertacademy.com/main/code/problem/problemDetail.do?problemLevel=1&problemLevel=2&problemLevel=3&contestProbId=AXO72aaqPrcDFAXS&categoryId=AXO72aaqPrcDFAXS&categoryType=CODE&problemTitle=&orderBy=FIRST_REG_DATETIME&selectCodeLang=ALL&select-1=3&pageSize=10&pageIndex=3

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

 

  • 1. 숫자의 맨 앞과 맨 뒤가 같은 수인지
  • 2. 제곱근 값이 int 형인지 (정수형)

 

import math 
t=int(input())
for tc in range(t):
    a,b = map(int,input().split())
    cnt = 0
    for i in range(a,b+1):
        rute = math.sqrt(i) //  i**(1/2)과 동일
        if rute ==int(rute):
            i = str(i)
            rute = str(int(rute))
            if i == i[::-1] and rute == rute[::-1]:
                cnt+=1
    print(f'#{tc+1} {cnt}')

 

 

📮개인 공부를 위한 공간으로 틀린 부분이 있을 수도 있습니다.📮

문제점 및 수정 사항이 있을 시, 언제든지 댓글로 피드백 주시기 바랍니다.

'algorithm > swea' 카테고리의 다른 글

[swea/python] #9997 #10032 #10059 #10505 #10200  (0) 2022.04.27