티스토리 뷰

Algorithm

[JAVA] 백준 - 1차원 배열

ellie.strong 2021. 3. 29. 23:50
728x90

백준 10818 : 최대, 최소

StringTokenizer.hasMoreTokens()

- 토큰이 남아있으면 true, 비어있으면 false

Arrays.sort(array)

- array를 정렬해준다. 

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

public class Main {

    public static void main(String[] args) throws IOException {

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


        int N = Integer.parseInt(br.readLine());
        StringTokenizer st = new StringTokenizer(br.readLine(), " ");

        int index = 0;
        int[] arr = new int[N];
        while(st.hasMoreTokens()) { // 토큰이 남아있으면 true, 비어있으면 false
            arr[index] = Integer.parseInt(st.nextToken());
            index++;
        }

        Arrays.sort(arr);
        System.out.println(arr[0] + " " + arr[N - 1]);
    }
}

배열을 사용하지 않는 방법

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

public class Main {

    public static void main(String[] args) throws IOException {

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


        int N = Integer.parseInt(br.readLine());
        StringTokenizer st = new StringTokenizer(br.readLine(), " ");

        int max = -1000001;
        int min = 1000001;

        while(st.hasMoreTokens()) {
            int val = Integer.parseInt(st.nextToken());
            if(val > max) max = val;
            if(val < min) min = val;
        }
        
        System.out.println(min + " " + max);
    }
}

 

백준 3052 : 나머지

HashSet

- JAVA Collections 중 Set의 파생클래스

1. 중복 원소를 허용하지 않는다. 

2. 순서 개념을 갖지 않는다. → Collections.sort() 메소드 사용 불가

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


public class Main {

    public static void main(String[] args) throws IOException {

        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        HashSet<Integer> hs = new HashSet<Integer>();
        
        for(int i = 0; i < 10; i++) {
            hs.add(Integer.parseInt(br.readLine()) % 42);
        }

        System.out.println(hs.size());
    }
}

 

백준 1546 : 평균

배열을 사용하지 않는 방법

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


public class Main {

    public static void main(String[] args) throws IOException {

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

        int N = Integer.parseInt(br.readLine());
        StringTokenizer st = new StringTokenizer(br.readLine(), " ");

        double max = -1.0;
        double sum = 0.0;
        for(int i = 0; i < N; i++) {
            double value = Double.parseDouble(st.nextToken());

            if(value > max) max = value;

            sum += value;
        }

        System.out.println(((sum / max) * 100.0) / N);
    }
}

배열을 사용할 경우 Arrays.sort(array) 메소드를 사용하면 된다. 

 

백준 4344 : 평균은 넘겠지

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


public class Main {

    public static void main(String[] args) throws IOException {

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

        int C = Integer.parseInt(br.readLine());
        StringTokenizer st;
        int[] arr;

        for(int i = 0; i < C; i++) {
            st = new StringTokenizer(br.readLine());

            int N = Integer.parseInt(st.nextToken());
            arr = new int[N];

            double sum = 0.0;
            for(int j = 0; j < N; j++) {
                int val = Integer.parseInt(st.nextToken());
                arr[j] = val;
                sum += val;
            }
            double avg = sum / N;

            double count = 0.0;
            for(int j = 0; j < N; j++) {
                if(arr[j] > avg) count++;
            }

            System.out.printf("%.3f%%\n", (count / N) * 100);
        }
    }
}

출력 시 BufferedWriter 사용

String.format()

- printf() 메소드와 비슷하게 포멧을 이용하여 String을 표현할 수 있게 한다. 

import java.io.*;
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));

        int C = Integer.parseInt(br.readLine());
        StringTokenizer st;
        int[] arr;

        for(int i = 0; i < C; i++) {
            st = new StringTokenizer(br.readLine());

            int N = Integer.parseInt(st.nextToken());
            arr = new int[N];

            double sum = 0.0;
            for(int j = 0; j < N; j++) {
                int val = Integer.parseInt(st.nextToken());
                arr[j] = val;
                sum += val;
            }
            double avg = sum / N;

            double count = 0.0;
            for(int j = 0; j < N; j++) {
                if(arr[j] > avg) count++;
            }

            bw.write(String.format("%.3f%%\n", (count / N) * 100));
        }

        bw.flush();
        bw.close();
    }
}
728x90
댓글
공지사항
최근에 올라온 글