TIL

TIL(4)

류정근 2024. 4. 24. 20:00

오늘 한일

백준 풀기 - Buffer 에 대한 심오한 이해

강의 듣기 -  2주차 과제, 3주차(객체에 대한 수업)

 

 

백준을 풀다보니 버퍼에 대한 문제가 나왔다.

특징은 스캐너가 쓰레기를 하나씩 버리는 느낌이라면 버퍼는 한번에 모아서 버리는 느낌이라는 점?

장점은 크만큼 처리속도가 빠르다!

 

근데 아직 익숙하지 않아서 쓰기가 어렵다.

package practice.backjun.loop;

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

public class Buffer1 {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));  //선언
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        StringTokenizer st;
        int T = Integer.parseInt(br.readLine());
        for (int i = 0; i < T; i++) {
            st = new StringTokenizer(br.readLine());
            //Integer.parseInt -> 문자열을 입력받고 int로 변환
            bw.write((Integer.parseInt(st.nextToken()) + ""));

        }
        bw.close();
    }
}

 

 

기본적인 예제문으로 시작~~

한줄씩 뜯어서 이해해 보려 시도했지만 역시 쉽지않다.

그래서 나의 빛 원하님께 물어봤다.

그래도 사실잘 이해안되긴 했다.

확실한건 자주 써봐야 한다는 점.

그래서 몇문제 더 풀어보기로 했다.

package practice.backjun.loop;

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

public class Buffer2 {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        StringTokenizer st;
        int T = Integer.parseInt(br.readLine());
        for (int i = 0; i < T; i++) {
            st = new StringTokenizer(br.readLine());
            bw.write("Case #" + (i + 1)  + ": "+ (Integer.parseInt(st.nextToken()) + (Integer.parseInt(st.nextToken())) + "\n" ));
        }

    bw.close();
    }
}

 

덧셈을 출력하는 문제!! 나머지 문제는 거의 비슷해서 패스!!!

 

package practice.backjun.loop;

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

public class Buffer4 {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        StringTokenizer st;


        while (true) {
            st = new StringTokenizer(br.readLine());
            int number = Integer.parseInt(st.nextToken());
            int number2 = Integer.parseInt(st.nextToken());
            boolean Jogun = (number == 0 && number2 == 0);
            if (!Jogun) {
                bw.write(number + number2 + "\n");
            } else {
                bw.close();
                break;
            }





        }


    }
}

 

조건 주는 문제

 

그러다가

 

마지막 문제에서 막힘 ㅠㅠ

이건 나중에 풀어봐야지

 

 

그리고 알고리즘 문제 푸는 시간을 가진뒤 강의를 열심히 들었다.

쉬울 줄 알았는데 귀찮은 2주차 과제 부터 끝냈다.

package homework;

import java.util.*;

public class two_week {
    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);


        // 저장할 자료 구조명을 입력
        System.out.print("저장할 자료구조(List/Set/Map: ");
        String array = sc.nextLine();

        //제목 입력
        System.out.print("제목을 입력하세요:");
        String title = sc.nextLine();

        //별점 입력
        System.out.print("별점을 입력하세요(5점만점): ");
        float rate = sc.nextFloat();
        sc.nextLine();

        // array 를 List로 입력받을 때, ListRecipe에 저장, 출력
        if (array.equals("List")) {
            ArrayList<String> ListRecipe = new ArrayList<>();
            while (true) {
                System.out.print("레시피를 입력하세요: " );
                String text = sc.nextLine();
                ListRecipe.add(text);
                if (text.equals("끝")) {
                    break;
                }
            }  // 출력
            for (int i = 0; i < ListRecipe.toArray().length; i++) {
                System.out.println((i + 1) +"."+ ListRecipe.get(i));
            }
        }

        //array를 Set으로 입력 받았을때, SetRecipe에 저장
        if (array.equals("Set")) {
            Set<String> SetRecipe = new HashSet<>();
            while (true) {
                System.out.print("레시피를 입력하세요: " );
                String text = sc.nextLine();
                SetRecipe.add(text);
                if (text.equals("끝")) {
                    break;
                }
            }//SetRecipe 출력
            Iterator iterator = SetRecipe.iterator();
            for (int i = 0; i < SetRecipe.size(); i++) {
                System.out.println((i + 1) +"."+ iterator.next());
            }
        }

        //array를 Map으로 입력 받았을때, MapList에 저장
        if (array.equals("Map")) {
            Map <Integer, String> MapList = new HashMap<>();
            int mapNumber = 1;

            while (true) {
                System.out.print("레시피를 입력하세요: " );
                String text = sc.nextLine();
                // key 값 임시설정
               MapList.put(mapNumber++,text);

                if (text.equals("끝")) {
                    break;
                }
            }
            //MapList 출력
            for (int i = 0; i < MapList.size(); i++) {
                System.out.println((i + 1) +"."+MapList.get(i + 1) );
            }
        }

        //제목 출력
        System.out.println( "[ " + array + "으로 저장된 " +  title + " ] ");
        //평점 출력
        System.out.println("별점:" + rate + "(" + rate / 5 * 100 + "%)"  );






    }
}

 

-귀찮기는 한데 다양한 자료구조를 사용해본것은 만족 스러웠음

 

객체 앞부분은 이미 아는 내용이라 정리한다는 기분으로 들었다.

내일부터는 모르는 부분(인터페이스) 니까 집중해서 듣기 위해 오늘은 컨디션 관리 해야지~

'TIL' 카테고리의 다른 글

상속 정복하기  (0) 2024.04.27
계산기 만들기  (3) 2024.04.26
Til(3)  (4) 2024.04.23
TIL(2)  (0) 2024.04.22
내일배움캠프 4일차 TIL + 프로젝트를 하며 배운점!!  (0) 2024.04.19