ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [백준 알고리즘] 단계별로 풀어보기 - 3단계 반복문 JAVA
    코딩테스트/백준 2023. 6. 2. 08:22

     

    📑 Q2739

     

    package step3;
    
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    
    public class Q1_2739 {
        public static void main(String[] args) throws IOException {
            BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
            int input = Integer.parseInt(br.readLine());
            for(int i=1; i<=9;i++){
                System.out.println(input + " * " + i + " = " + (input*i));
            }
    
            /*StringBuffer sb = new StringBuffer();
            int N = Integer.parseInt(br.readLine());
            for(int i=1; i<10; i++){
                sb.append(N).append(" * ").append(i).append(" = ").append(N*i).append("\n");
            }*/
    
    
        }
    }

     

     

    📑 Q10950

     

    readLine은 입력 받은 값을 한 줄씩 읽어온다. 

    몇 번째 줄까지 입력받을건지 처음에 숫자로 받아온다. 3을 입력하면 총 3번의 연산이 일어난다는 의미이다. 

     

     

    st에서 스페이스를 기준으로 읽어온 2 숫자를 nextToken으로 읽어 첫번째 숫자 두번째 숫자를 더한다음 sb에 추가한다. 

     

    package step3;
    
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.util.StringTokenizer;
    
    public class Q2_10950 {
        public static void main(String[] args) throws IOException {
            BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
            int input = Integer.parseInt(br.readLine());
    
            StringTokenizer st;
            StringBuilder sb = new StringBuilder();
    
            for(int i=0; i<input;i++){
                st = new StringTokenizer(br.readLine(), " ");
                sb.append(Integer.parseInt(st.nextToken()) + Integer.parseInt(st.nextToken()));
                sb.append("\n");
            }
            System.out.println(sb);
        }
    }

     

     

     

    📑 Q8393

     

    숫자 입력하면 그 수까지의 합이 나오는 것. 예를들어 4 입력하면 1 + 2 + 3 = 6, 즉 6이 출력되어야 한다. 

     

    package step3;
    
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    
    public class Q3_8393 {
        public static void main(String[] args) throws IOException {
            BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
            int input = Integer.parseInt(br.readLine());
            int sum=0;
            for(int i=1; i<=input; i++){
                sum+=i;
            }
            System.out.println(sum);
    
        }
    }

     

     

    📑 Q25304

     

    StringTokenizer의 활용법에 대해 다시 한 번 익히게 되었다. 근데, StringTokenizer(br.readLine())으로 하면 기본으로 공백을 기준으로 나눈다고 알고 있었는데 안된다. 그냥 뒤에 어떤 값을 기준으로 문자열을 나눌 것인지 파라미터를 넣어주자. 

     

    반복문 안에서만 사용하는 변수는 지역변로 선언하자. 지역변수 전역변수 분리하기 !! 

     

    package step3;
    
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.util.StringTokenizer;
    
    public class Q4_25304 {
        public static void main(String[] args) throws IOException {
            BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
            int totalPrice = Integer.parseInt(br.readLine());
            int totalCount = Integer.parseInt(br.readLine());
            int calculPrice=0;
    
            //한줄씩 읽어오는데 띄어쓰기를 기준으로, 앞에는 가격 뒤에는 수량.
            for(int i=0; i<totalCount; i++){
                StringTokenizer tokenizer = new StringTokenizer(br.readLine()," ");//공백으로 값을 읽어와라.
                //★ 지역변수로 할 수 있는 건 지역변수로 하자.
                int itemPrice = Integer.parseInt(tokenizer.nextToken());
                int itemCount = Integer.parseInt(tokenizer.nextToken());
                //  sum += Integer.parseInt(st.nextToken()) * Integer.parseInt(st.nextToken());
                calculPrice += (itemPrice * itemCount);
    
            }
    
            if(calculPrice == totalPrice){
                System.out.println("Yes");
            }else{
                System.out.println("No");
            }
    
    
    
    
        }
    }

     

     

     

    📑 Q25314 

     

    단순히 문자열을 출력하는 문제. 문자열을 붙일 때 StringBuilder를 기억하자. 

    package step3;
    
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    
    public class Q5_25314 {
        public static void main(String[] args) throws IOException {
            BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
            int N = (Integer.parseInt(br.readLine()))/4;
    
            StringBuilder sb = new StringBuilder();
            for(int i=0; i<N; i++){
                sb.append("long").append(" ");
            }
    
            sb.append("int");
            System.out.println(sb);
    
    
        }
    }

     

     

     

    📑 Q15552

     

    두수의 합 구하기 이전과 크게 다를 것 없는 문제. 출력에 System.out.println() 대신 BufferedWriter 사용한 거 확인. 

     

    package step3;
    
    import java.io.*;
    import java.util.StringTokenizer;
    
    public class Q6_15552 {
        public static void main(String[] args) throws IOException {
            BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
            int count = Integer.parseInt(br.readLine());
            BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); // 선언
    
    
            for(int i=0; i<count; i++){
    
                StringTokenizer st = new StringTokenizer(br.readLine()," ");
                bw.write(Integer.parseInt(st.nextToken())+Integer.parseInt(st.nextToken())+"\n");
    
            }
    
            bw.close();
        }
    }

     

     

     

    📑 Q11021

     

    하나에 대해 알게되면 왜 그 하나에 꽂히는지.. BufferedWriter 알았다고 bw에 모두 담아 출력하려 했다. 그것보다 StringBuilder 이용해서 출력하는 게 더 깔끔할 것 같다. 

     

    여기서 BuffereWriter의 write 메서드는 아래와 같이 String만 인자로 받을 수 있다

     

     

    따라서 int 형인 i의 값을 출력할 때 Integer.toString(i)으로 int형을 string 형으로 바꿔주었다. 

     

    package step3;
    
    import java.io.*;
    import java.util.StringTokenizer;
    
    public class Q7_11021 {
        public static void main(String[] args) throws IOException {
            BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    
            int count = Integer.parseInt(br.readLine());
            BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); // 선언
            StringBuilder sb = new StringBuilder();
    
    
           /* for(int i=1; i<=count; i++){
    
                StringTokenizer st = new StringTokenizer(br.readLine()," ");
    //            bw.write("Case #" + count + ": " + Integer.parseInt(st.nextToken())+Integer.parseInt(st.nextToken())+"\n");
                bw.write("Case #");
                bw.write(Integer.toString(i));
                bw.write(": ");
                bw.write(Integer.parseInt(st.nextToken())+Integer.parseInt(st.nextToken())+"\n");
    
            }*/
    
            for(int i=1; i<=count; i++){
                StringTokenizer st = new StringTokenizer(br.readLine()," ");
                sb.append("Case #").append(i).append(": ").append(Integer.parseInt(st.nextToken()) + Integer.parseInt(st.nextToken())).append("\n");
            }
    		//bw.write(sb.toString());
            bw.write(String.valueOf(sb));
            bw.close();
        }
    }

     

     

     

     

     

    📑 Q2438

     

    https://wonisdaily.tistory.com/248

     

    [JAVA] repeat 메서드, for문 대신 사용하기 간편!

    📑 Repeat 메서드 String 메서드 중 String 문자열을 파라미터의 주어진 횟수만큼 반복한다. 자바11에 새로 추가된 String 메서드이다. 파라미터를 0으로 지정하면 빈 문자열을 반환한다. 파라미터를 음

    wonisdaily.tistory.com

     

    이중 for문 대신 repeat을 사용해보자. 설명은 위에 

    package step3;
    
    import java.io.*;
    
    public class Q9_2438 {
        public static void main(String[] args) throws IOException {
            BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
            int count = Integer.parseInt(br.readLine());
            BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
    
            for(int i =1; i<=count; i++){
               /* for(int j=1; j<=i; j++){
                    bw.write("*");
                }*/
                bw.write("*".repeat(i));
    
                bw.write("\n");
            }
    
            bw.close();
    
        }
    }

     

     

    📑 Q9439

     

    이번엔 위에서 했던 repeat을 제대로 이용해봤다. 아주 편하고 재밌는 메서드. 

     

    package step3;
    
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    
    public class Q10_9439 {
        public static void main(String[] args) throws IOException {
            BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
            StringBuilder sb = new StringBuilder();
            int count = Integer.parseInt(br.readLine());
              for(int i=1; i<=count;i++){
                  sb.append(" ".repeat(count-i)).append("*".repeat(i)).append("\n");
              }
    
            System.out.println(sb);
    
        }
    }
    반응형

    댓글

Designed by Tistory.