Algorithm

그리디 - 숫자 카드 게임

향각산 2022. 1. 5. 21:32

이차원 배열에서 행 중 가장 작은 수만 골라서 그 중 가장 큰 수를 찾는 게임

 

이차원 배열을 입력받으면서 그 중 작은수들을 고르고 한번 더 비교를 통해 더 큰 수를 찾는다.

현재 문제에는 몇번째 행이라던가 그런 추가 조건이 없기 때문에 비교적 쉬운 문제다.

사실 배열은 생성할 필요도 없지만 현재 테스트 코드에서 모든걸 끝내기 위해 작성했다.

    @Test
    void 그리디_숫자_카드_게임() {
        // 배열의 한 행을 고르는데, 배열의 행에서 가장 작은값이 선택될 경우 가장 큰 값을 고르는 방법
        int n = 3;
        int m = 3;

        int[][] arr = {
                        {3,1,2},
                        {4,5,4},
                        {2,2,2}
        };

        List<Integer> list = new ArrayList<>();

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

            int min = 100000;
            for (int j = 0; j < m; j++) {
                int value = arr[i][j];
                if (value < min) {
                    min = value;
                }
            }

            list.add(min);
        }

        Integer max = Collections.max(list);
        System.out.println(max);

        Collections.sort(list);
        System.out.println(list.get(list.size()-1));
    }

 

기존에는 항상 정렬 후 첫번째 값이나 맨 뒤의 값을 가져오는 형태를 취했는데

파이썬 min이 부러워서 보니까 Collections.min, max를 찾았다.

내가 하는 실무에서는 너무 사용을 안하다보니 몰랐는데 정렬하고 찾는것보다 내 알고리즘 풀이 시간을 줄여줄 것 같다.

'Algorithm' 카테고리의 다른 글

그리디 - 큰 수 구하기  (0) 2022.01.04
종만북이 설명하는 알고리즘 풀이 순서  (0) 2021.06.29
Hash - 1  (0) 2021.06.08
[C++] 소문자 대문자 변형  (0) 2019.04.25
부분수열 (Subsequence)  (0) 2019.03.31
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
글 보관함