한 발짜국

알고리즘 #7 (백준 8393, 10818, 2438 ~ 2442번) [Java] 본문

알고리즘&자료구조

알고리즘 #7 (백준 8393, 10818, 2438 ~ 2442번) [Java]

발짜국 2021. 9. 24. 08:32

백준 알고리즘 7일차

 

[2021.9.24]

백준 8393번 (Java)

https://www.acmicpc.net/problem/8393

 

8393번: 합

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

www.acmicpc.net

import java.util.Scanner;

public class Main {
    public static void main(String args[]) {
        Scanner sc = new Scanner(System.in);
        int num = sc.nextInt();
        int sum = num * (num+1) / 2;
        
        System.out.println(sum);
    }
}

아마도 내 코드의 시간복잡도는 O(1)

 

백준 10818번 (Java)

https://www.acmicpc.net/problem/10818

 

10818번: 최소, 최대

첫째 줄에 정수의 개수 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 N개의 정수를 공백으로 구분해서 주어진다. 모든 정수는 -1,000,000보다 크거나 같고, 1,000,000보다 작거나 같은 정수이다.

www.acmicpc.net

import java.util.Scanner;

public class Main {
    public static void main(String args[]) {
        Scanner sc = new Scanner(System.in);
        int N = sc.nextInt();
        
        int num = sc.nextInt();
        int max = num;
        int min = num;
        
        for(int i=1; i<N; i++) {
            num = sc.nextInt();
            if(min > num) min = num;
            if(max < num) max = num;
        }
        
        System.out.println(min + " " + max);
    }
}

 

백준 2438번 (Java)

https://www.acmicpc.net/problem/2438

 

2438번: 별 찍기 - 1

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

www.acmicpc.net

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<=i; j++) {
                System.out.print("*");
            }
            System.out.println();
        }
    }
}

 

백준 2439번 (Java)

https://www.acmicpc.net/problem/2439

 

2439번: 별 찍기 - 2

첫째 줄에는 별 1개, 둘째 줄에는 별 2개, N번째 줄에는 별 N개를 찍는 문제 하지만, 오른쪽을 기준으로 정렬한 별(예제 참고)을 출력하시오.

www.acmicpc.net

import java.util.Scanner;

public class Main {
    public static void main(String args[]) {
        Scanner sc = new Scanner(System.in);
        int N = sc.nextInt();
        
        int k = N-1;
        for(int i=0; i<N; i++) {
            for(int j=0; j<N; j++){
                if(j < k) System.out.print(" ");
                else System.out.print("*");
            }
            System.out.println();
            k--;
        }
    }
}

내 코드가 가독성이 떨어지는 것 같아 다른 분들의 코드를 찾아봤다.

for문을 3개 사용하는 방법이 더 이해하기 좋은 것 같다.

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=0; j<N-i; j++){
                System.out.print(" ");
            }
            for(int j=0; j<i; j++){
                System.out.print("*");
            }
            System.out.println();
        }
    }
}

 

백준 2440번 (Java)

https://www.acmicpc.net/problem/2440

 

2440번: 별 찍기 - 3

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

www.acmicpc.net

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>0; i--) {
            for(int j=0; j<i; j++){
                System.out.print("*");
            }
            System.out.println();
        }
    }
}

 

백준 2441번 (Java)

https://www.acmicpc.net/problem/2441

 

2441번: 별 찍기 - 4

첫째 줄에는 별 N개, 둘째 줄에는 별 N-1개, ..., N번째 줄에는 별 1개를 찍는 문제 하지만, 오른쪽을 기준으로 정렬한 별(예제 참고)을 출력하시오.

www.acmicpc.net

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>0; i--) {
            for(int j=0; j<N-i; j++){
                System.out.print(" ");
            }
            for(int j=0; j<i; j++){
                System.out.print("*");
            }
            System.out.println();
        }
    }
}

 

백준 2442번 (Java)

https://www.acmicpc.net/problem/2442

 

2442번: 별 찍기 - 5

첫째 줄에는 별 1개, 둘째 줄에는 별 3개, ..., N번째 줄에는 별 2×N-1개를 찍는 문제 별은 가운데를 기준으로 대칭이어야 한다.

www.acmicpc.net

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=0; j<N-i; j++) {
                System.out.print(" ");
            }
            for(int j=0; j<i*2-1; j++) {
                System.out.print("*");
            }
            System.out.println();
        }
    }
}
반응형
Comments