본문 바로가기
JAVA/백준

백준 단계별로 풀기 자바 [3단계 - for문]

by 비전공자 기록광 2021. 8. 16.
반응형

https://www.acmicpc.net/step

 

단계별로 풀어보기

단계별은 @jh05013님이 관리하고 계십니다. 단계제목설명정보총 문제내가 맞은 문제1입출력과 사칙연산입력, 출력과 사칙연산을 연습해 봅시다. Hello World!112if문if문을 사용해 봅시다.53for문for문을

www.acmicpc.net

 

1단계 2739 구구단

N을 입력받은 뒤, 구구단 N단을 출력하는 프로그램을 작성하시오. 출력 형식에 맞춰서 출력하면 된다.

첫째 줄에 N이 주어진다. N은 1보다 크거나 같고, 9보다 작거나 같다.

 

출력형식과 같게 N*1부터 N*9까지 출력한다.

 

 

1
2
3
4
5
6
7
8
9
10
11
12
import java.util.Scanner;
 
public class Main{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        
        for(int i=1; i<=9; i++) {
            System.out.println(n+" * "+i+" = "+n*i);
        }
    }
}
cs

 

 

 

2단계 10950 A+B-3

두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오.

 

첫째 줄에 테스트 케이스의 개수 T가 주어진다.

각 테스트 케이스는 한 줄로 이루어져 있으며, 각 줄에 A와 B가 주어진다. (0 < A, B < 10)

각 테스트 케이스마다 A+B를 출력한다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
import java.util.Scanner;
 
public class Main{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        int num = sc.nextInt();
                
        int[] arr = new int[num];
        
        for(int i=0; i<num; i++) {
            int A = sc.nextInt();
            int B = sc.nextInt();
            
            arr[i]=A+B;
            
        }
        
        for(int i=0; i<num; i++) {
            System.out.println(arr[i]);
        }  
    }
}
cs

 

 

3단계 8393 합

n이 주어졌을 때, 1부터 n까지 합을 구하는 프로그램을 작성하시오.

첫째 줄에 n (1 ≤ n ≤ 10,000)이 주어진다.

 

1부터 n까지 합을 출력한다.

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import java.util.Scanner;
 
public class Main{
    public static void main(String[] args){
       Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        
        int sum = 0;
        
        for(int i=1; i<=n; i++) {
            sum+=i;
        }
        System.out.println(sum); 
    }
}
cs

 

4단계 15552 빠른 A+B

본격적으로 for문 문제를 풀기 전에 주의해야 할 점이 있다. 입출력 방식이 느리면 여러 줄을 입력받거나 출력할 때 시간초과가 날 수 있다는 점이다.

Java를 사용하고 있다면, Scanner와 System.out.println 대신 BufferedReader와 BufferedWriter를 사용할 수 있다. BufferedWriter.flush는 맨 마지막에 한 번만 하면 된다.

 

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

 

각 테스트케이스마다 A+B를 한 줄에 하나씩 순서대로 출력한다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.StringTokenizer;
 
public class Main {
    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((Integer.parseInt(st.nextToken()))+(Integer.parseInt(st.nextToken()))+"\n");
        }
        bw.flush();
    }
}
cs

 

 

5단계 2741 N찍기

자연수 N이 주어졌을 때, 1부터 N까지 한 줄에 하나씩 출력하는 프로그램을 작성하시오.

 

1
2
3
4
5
6
7
8
9
10
11
12
import java.util.Scanner;
 
public class Main{
    public static void main(String[] args){
           Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        
        for(int i=1; i<=n;i++) {
            System.out.println(i);
        } 
    }
}
cs

 

 

 

6단계 2742 기찍 N

자연수 N이 주어졌을 때, N부터 1까지 한 줄에 하나씩 출력하는 프로그램을 작성하시오.

 

1
2
3
4
5
6
7
8
9
10
11
12
import java.util.Scanner;
 
public class Main{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        
        for(int i=n; i>=1; i--) {
            System.out.println(i);
        } 
    }
}
cs

 

 

 

7단계 11021 A+B-7

두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오.

첫째 줄에 테스트 케이스의 개수 T가 주어진다.

각 테스트 케이스는 한 줄로 이루어져 있으며, 각 줄에 A와 B가 주어진다. (0 < A, B < 10)

 

각 테스트 케이스마다 "Case #x: "를 출력한 다음, A+B를 출력한다. 테스트 케이스 번호는 1부터 시작한다.

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import java.util.Scanner;
 
public class Main{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        int t = sc.nextInt();
        
        for(int i=1; i<=t; i++) {
            int A = sc.nextInt();
            int B = sc.nextInt();
            
            System.out.println("Case #"+i+": "+(A+B));
        }    
    }
}
cs

 

 

8단계 11022 A+B-8

두 정수 A와 B를 입력받은 다음, A+B를 출력하는 프로그램을 작성하시오.

첫째 줄에 테스트 케이스의 개수 T가 주어진다.

각 테스트 케이스는 한 줄로 이루어져 있으며, 각 줄에 A와 B가 주어진다. (0 < A, B < 10)

 

각 테스트 케이스마다 "Case #x: A + B = C" 형식으로 출력한다. x는 테스트 케이스 번호이고 1부터 시작하며, C는 A+B이다.

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import java.util.Scanner;
 
public class Main{
    public static void main(String[] args){
      Scanner sc = new Scanner(System.in);
        int t = sc.nextInt();
        
        for(int i=1; i<=t; i++) {
            int A = sc.nextInt();
            int B = sc.nextInt();
            
            System.out.println("Case #"+i+": "+A+" + "+B+" = "+(A+B));
        }  
    }
}
cs

 

 

9단계 2438 별찍기 - 1

첫째 줄에는 별 1개, 둘째 줄에는 별 2개, N번째 줄에는 별 N개를 찍는 문제

첫째 줄에 N(1 ≤ N ≤ 100)이 주어진다.

 

첫째 줄부터 N번째 줄까지 차례대로 별을 출력한다.

 

 

1
2
3
4
5
*
**
***
****
*****
cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import java.util.Scanner;
 
public class Main{
    public static void main(String[] args){
      Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
         
        for(int i=1; i<=n; i++) {
            for(int j=1; j<=i; j++) {
                System.out.print("*");
            }
            System.out.println();
        }  
    }
}
cs

 

 

 

10단계 2439 별찍기 - 2

첫째 줄에는 별 1개, 둘째 줄에는 별 2개, N번째 줄에는 별 N개를 찍는 문제

하지만, 오른쪽을 기준으로 정렬한 별(예제 참고)을 출력하시오.

첫째 줄에 N(1 ≤ N ≤ 100)이 주어진다.

 

첫째 줄부터 N번째 줄까지 차례대로 별을 출력한다.

 

1
2
3
4
5
    *
   **
  ***
 ****
*****
cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
import java.util.Scanner;
 
public class Main{
    public static void main(String[] args){
      Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
                
        for(int i=0; i<n; i++) {
            for(int j=0; j<n; j++) {
                if(j==i) {
                    for(int k=1; k<n-i; k++) {
                        System.out.print(" ");
                    }
                    for(int l=1; l<=j+1; l++) {
                        System.out.print("*");
                    }
                }
            }
            System.out.println();
        }  
    }
}
cs

 

 

11단계 10871 X보다 작은 수 

정수 N개로 이루어진 수열 A와 정수 X가 주어진다. 이때, A에서 X보다 작은 수를 모두 출력하는 프로그램을 작성하시오.

첫째 줄에 N과 X가 주어진다. (1 ≤ N, X ≤ 10,000)

둘째 줄에 수열 A를 이루는 정수 N개가 주어진다. 주어지는 정수는 모두 1보다 크거나 같고, 10,000보다 작거나 같은 정수이다.

 

X보다 작은 수를 입력받은 순서대로 공백으로 구분해 출력한다. X보다 작은 수는 적어도 하나 존재한다.

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import java.util.Scanner;
 
public class Main{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        int x = sc.nextInt();
        
        for(int i=0; i<n; i++) {
            int nn = sc.nextInt();
            
            if(nn<x) System.out.print(nn+" ");
        }    
    }
}
cs

 

 

반응형

댓글