알고리즘 문제풀이/Beakjoon

[자바/백준] 단계별 문제 풀이 - for문

joah.k 2021. 6. 22. 17:09
728x90

 

4 15552번 빠른 A+B

시간 제한이 있는 문제. 입출력 방식에서 시간을 아껴야 한다. 고로 Scanner 안 씀 

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class step03_4 {
    public static void main(String[] args) throws IOException {
        // 15552번. 빠른 A+B
        // 주의 ) 입출력 방식이 느리면 여러 줄을 입력받거나 출력할 때 시간초과가 날 수 있다.
        // Java를 사용하고 있다면, Scanner와 System.out.println 대신 BufferedReader와 BufferedWriter를 사용할 수 있다.
        // BufferedWriter.flush는 맨 마지막에 한 번만 하면 된다.

        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int cnt = Integer.parseInt(br.readLine());  // 몇 번 돌릴거냐

        StringTokenizer st;
        StringBuilder sb= new StringBuilder();

        for (int i=0; i<cnt; i++){
            st = new StringTokenizer(br.readLine()," ");
            sb.append(Integer.parseInt(st.nextToken()) + Integer.parseInt(st.nextToken())).append('\n');
        }
        System.out.println(sb);
        br.close();
    }
}

 

5 2741번 N 찍기
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class step03_5 {
    public static void main(String[] args) throws IOException {
        // 2741번. N 찍기
        //자연수 N이 주어졌을 때, 1부터 N까지 한 줄에 하나씩 출력하는 프로그램을 작성하시오.

        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int cnt = Integer.parseInt(br.readLine());  // 몇 번 돌릴거냐

        for(int i = 1; i<=cnt ; i++){
            System.out.println(i);
        }
        br.close();
    }
}

 

 

6 2742번 기찍 N
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class step03_6 {
    public static void main(String[] args) throws IOException {
        // 2742번. 기찍N

        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        int cnt = Integer.parseInt(br.readLine());

        for(int i=cnt ; i >0; i--){
            System.out.println(i);
            br.close();

        }
    }
}

 

7 11021번 A+B - 7
package step03_for;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class step03_07 {
    public static void main(String[] args) throws IOException {
        // 11021번. A+B-7
        //두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오.

        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int cnt = Integer.parseInt(br.readLine());

        StringBuilder sb = new StringBuilder();
        StringTokenizer st ;

        for(int i=1; i<cnt+1 ; i++){
            st = new StringTokenizer(br.readLine(), " ");
            sb.append("Case #").append(i).append(": ").append(Integer.parseInt(st.nextToken())+Integer.parseInt(st.nextToken())).append('\n');
        }
        System.out.println(sb);
        br.close();
    }
}

 

8 11022번 A+B - 8
package step03_for;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class step03_08 {
    public static void main(String[] args) throws IOException {
        // 11022번. A+B - 8
        // 두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오.

        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int cnt = Integer.parseInt(br.readLine());

        StringBuilder sb = new StringBuilder();
        StringTokenizer st;

        int a;
        int b;

        for(int i=1; i<cnt+1 ; i++){
            st = new StringTokenizer(br.readLine(), " ");
            a = Integer.parseInt(st.nextToken());
            b= Integer.parseInt(st.nextToken());

            sb.append("Case #").append(i).append(": ").append(a).append(" + ").
                    append(b).append(" = ").append(a+b).append('\n');
        }
        System.out.println(sb);
        br.close();
    }
}

 

9 2438번 별 찍기 - 1
package step03_for;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class step03_09 {
    public static void main(String[] args) throws IOException {
        // 2438번. 별 찍기-1
        // 첫째 줄에는 별 1개, 둘째 줄에는 별 2개, N번째 줄에는 별 N개를 찍는 문제
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		br.close(); 
        
        int N = Integer.parseInt(br.readLine());
        for (int i = 1; i <= N; i++) {
            for (int j = 1; j <= i; j++) {
                System.out.print("*");
            }
            System.out.println();
        }
    }
}

 

10 2439번 별 찍기 - 2

System.out.print 가 너무 반복되어서 비효율적일 것 같아서 StringBuilder 도 같이 사용함 

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class step03_10 {
        public static void main(String[] args) throws IOException {
            // 2439번. 별 찍기 -2
            // 별찍기 + 오른쪽 정렬

            BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
            int N = Integer.parseInt(br.readLine());
            br.close();

            StringBuilder sb = new StringBuilder();

            for (int i = 1; i <= N; i++) {
                for (int j = 1; j <= N-i; j++) { // 공백 처리
                    sb.append(' ');
                }
                for (int k = 1; k <= i; k++) {  // * 처리
                    sb.append('*');
                }
                sb.append('\n');
            }
            System.out.print(sb);
        }
    }

 

 

 

11 10871번 X보다 작은 수
package step03_for;

import java.io.IOException;
import java.util.Scanner;

public class step03_11 {
    public static void main(String[] args) throws IOException {
        // 10871번. X보다 작은 수
        // 정수 N개로 이루어진 수열 A와 정수 X가 주어진다.
        // 이때, A에서 X보다 작은 수를 모두 출력하는 프로그램을 작성하시오.
        Scanner sc = new Scanner(System.in);
        int N = sc.nextInt();
        int X = sc.nextInt();
        sc.close();
        
        StringBuilder sb = new StringBuilder();

        for(int i = 0 ; i < N ; i++) {

            int value = sc.nextInt();
            if(value < X)
                sb.append(value+" ");
        }
        System.out.println(sb);
    }
}

오늘은 여기까지 (너무 재밌다!) 

 

728x90