관리 메뉴

막내의 막무가내 프로그래밍 & 일상

[알고리즘] 백준 14659 한조서열정리하고옴ㅋㅋ -그리디- 자바, 코틀린 본문

알고리즘/그리디

[알고리즘] 백준 14659 한조서열정리하고옴ㅋㅋ -그리디- 자바, 코틀린

막무가내막내 2021. 12. 5. 14:15
728x90

 

 

 

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

 

14659번: 한조서열정리하고옴ㅋㅋ

첫째 줄에 봉우리의 수 겸 활잡이의 수 N이 주어진다. (1 ≤ N ≤ 30,000) 둘째 줄에 N개 봉우리의 높이가 왼쪽 봉우리부터 순서대로 주어진다. (1 ≤ 높이 ≤ 100,000) 각각 봉우리의 높이는 중복 없이

www.acmicpc.net

 

 

백준 그리디 유형의 한조서열정리하고옴ㅋㅋ 문제를 풀어봤습니다. 

 

간단한 그리디 유형의 문제였는데 가독성이 조금 안좋은 것 같습니다..

 

풀이는 다음과 같습니다.

 

[Java]

import java.util.Scanner;

public class Main {

    private static int answer = Integer.MIN_VALUE;

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int N = sc.nextInt(); // 활잡이의 수
        int[] arr = new int[N];
        for (int i = 0; i < N; i++) {
            arr[i] = sc.nextInt();
        }
        for (int i = 0; i < N; i++) {
            int count = 0;
            for (int j = i + 1; j < N; j++) {
                if (arr[i] > arr[j]) { // 자신보다 높은 봉우리면 킬
                    count++;
                } else { // 자신보다 낮은 봉우리면 포기
                    break;
                }
            }
            answer = Math.max(answer, count);
        }
        System.out.println(answer);
    }
}

 

[Kotlin]

import java.util.*


private var answer = Int.MIN_VALUE
fun main(args: Array<String>) {
    val sc = Scanner(System.`in`)
    val N = sc.nextInt() // 활잡이의 수
    val arr = IntArray(N)
    for (i in 0 until N) {
        arr[i] = sc.nextInt()
    }
    for (i in 0 until N) {
        var count = 0
        for (j in i + 1 until N) {
            if (arr[i] > arr[j]) { // 자신보다 높은 봉우리면 킬
                count++
            } else { // 자신보다 낮은 봉우리면 포기
                break
            }
        }
        answer = answer.coerceAtLeast(count)
    }
    println(answer)
}

 

 

 

 

 

댓글과 공감은 큰 힘이 됩니다. 감사합니다. !!!

 

https://github.com/mtjin/algorithm_practice/commit/d878372d1dd9c9c7b4a8da687e960662abb9430f

 

백준 14659 풀이 · mtjin/algorithm_practice@d878372

 

github.com

 

 

 

728x90
Comments