UL :)
UL의 개발 블로그
UL :)
전체 방문자
오늘
어제
  • 분류 전체보기 (220)
    • 일상 (1)
    • 회고록 (7)
    • ChatGPT 아카이빙 (0)
    • PS(Java) (114)
      • 백준 (37)
      • 인프런 강의 문제 (77)
    • Web (69)
      • Spring (18)
      • JPA (7)
      • JSP (9)
      • HTML5 (12)
      • CSS (19)
      • HTTP (0)
      • 보안 (2)
    • Language (5)
      • Java (3)
      • JS (1)
      • Python (1)
    • Git, GitHub (4)
    • Settings (18)
      • IntelliJ (7)
      • Eclipse (2)
      • VSCode (3)
      • Android Studio (1)
      • VMware (2)
      • Mac (0)
    • Etc (1)

블로그 메뉴

  • 홈
  • 태그

공지사항

인기 글

태그

  • ViewName반환
  • @GetMapping
  • 동일성보장
  • 백준
  • TABLE 전략
  • EntityManagerFactory
  • @Id
  • @RequestParam
  • @JoinColumn
  • argumentresolver
  • @PostMapping
  • ReturnValueHandler
  • ORM
  • 영속성
  • HttpMessageConverter
  • SEQUENCE 전략
  • @ManyToOne
  • @Column
  • BOJ
  • @Table
  • consumes
  • 요청헤더
  • 영속성컨텍스트
  • produces
  • HandlerMethodArgumentResolver
  • 엔티티 매핑
  • 정렬
  • IDENTITY 전략
  • 1차 캐시
  • JPA

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
UL :)

UL의 개발 블로그

PS(Java)/백준

[PS] 백준 단계별로 풀기 - for문, while문

2022. 1. 10. 19:09
  • 22-01-10 푼 문제 수 : 14개

 

아래는 백준에 명시된 내용이다.

 

본격적으로 for문 문제를 풀기 전에 주의해야 할 점이 있다. 입출력 방식이 느리면 여러 줄을 입력받거나 출력할 때 시간초과가 날 수 있다는 점이다. Java를 사용하고 있다면, Scanner와 System.out.println 대신 BufferedReader와 BufferedWriter를 사용할 수 있다. BufferedWriter.flush는 맨 마지막에 한 번만 하면 된다. 또한 입력과 출력 스트림은 별개이므로, 테스트케이스를 전부 입력받아서 저장한 뒤 전부 출력할 필요는 없다. 테스트케이스를 하나 받은 뒤 하나 출력해도 된다.

 

  • 백준 15552번 빠른 A+B : 자바 입출력 스트림
public static void main(String[] args) throws NumberFormatException, IOException {

    BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
    BufferedWriter out = new BufferedWriter(new OutputStreamWriter(System.out));

    int T = Integer.parseInt(in.readLine());

    for(int i=0; i<T; i++) {
        String line = in.readLine();
        StringTokenizer st = new StringTokenizer(line);
        int num = 0;
        while(st.hasMoreTokens()) {
            num +=  Integer.parseInt(st.nextToken());
        }
        out.write(num+"\n");
    }
    in.close();
    out.flush();
    out.close();
}

※ 입출력 스트림이란?

 

 

  • 백준 11022번 A+B - 8 : EOF
public static void main(String[] args) throws NumberFormatException, IOException {

    BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
    BufferedWriter out = new BufferedWriter(new OutputStreamWriter(System.out));

    int t = Integer.parseInt(in.readLine());

    for(int i=1; i<=t; i++) {
        String line = in.readLine();
        StringTokenizer st = new StringTokenizer(line);
        int a=0, b=0;
        out.write("Case #"+ i +": ");
        while(st.hasMoreTokens()) {
            a = Integer.parseInt(st.nextToken());
            b = Integer.parseInt(st.nextToken());
        }
        out.write(a+" + "+b+" = "+(a+b)+"\n");
    }
    in.close();
    out.flush();
    out.close();
}
EOF(End of File) : 더 이상 읽을 수 있는 데이터가 없는 것을 의미하는 용어

EOF로 알고리즘을 처리하려면, 다음 라인으로 넘어갔을 때 입력값이 없는 경우를 체크해 프로그램을 종료해야 한다.

커맨드라인을 통해 입력값을 주는 경우, CTRL+Z를 누른 뒤 엔터키를 누르면 입력이 끝난 것으로 처리된다.

 

 

  • 백준 10951 A+B-4 : StringTokenizer로 문자열 자르기
public static void main(String[] args) throws NumberFormatException, IOException {

    BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
    BufferedWriter out = new BufferedWriter(new OutputStreamWriter(System.out));

    String line = "";
    while((line = in.readLine()) != null) {
        StringTokenizer st = new StringTokenizer(line);

        int a=0, b=0;
        while(st.hasMoreTokens()) {
            a = Integer.parseInt(st.nextToken());
            b = Integer.parseInt(st.nextToken());
        }
        out.write(a+b+"\n");
    }

    in.close();
    out.flush();
    out.close();
}

 

  • 백준 1110번 더하기 사이클
public static void main(String[] args) throws NumberFormatException, IOException {

    BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
    BufferedWriter out = new BufferedWriter(new OutputStreamWriter(System.out));

    int n = Integer.parseInt(in.readLine());

    int result=n;
    int cnt=0;

    do {
        int left = result/10;
        int right = result%10;
        int add = left + right;

        result = (right*10) + (add%10);
        cnt++;
    } while(result != n);
    out.write(cnt+"\n");

    in.close();
    out.flush();
    out.close();
}

이 문제는 생각보다 시간이 좀 걸려서.. 넣어봤다.

저작자표시 (새창열림)

'PS(Java) > 백준' 카테고리의 다른 글

[PS] 백준 11719번 그대로 출력하기 2  (0) 2022.01.28
[PS] 백준 단계별로 풀기 - 10757번 큰 수 A+B  (0) 2022.01.24
[PS] 백준 단계별로 풀기 - 배열(2), 함수  (0) 2022.01.12
[PS] 백준 단계별로 풀기 - 1차원 배열  (0) 2022.01.12
[PS] 백준 단계별로 풀기 - 입출력, If문  (0) 2022.01.10
    'PS(Java)/백준' 카테고리의 다른 글
    • [PS] 백준 단계별로 풀기 - 10757번 큰 수 A+B
    • [PS] 백준 단계별로 풀기 - 배열(2), 함수
    • [PS] 백준 단계별로 풀기 - 1차원 배열
    • [PS] 백준 단계별로 풀기 - 입출력, If문
    UL :)
    UL :)
    백엔드 개발자를 목표로 달리고 있습니다🔥

    티스토리툴바