Algorithm/나머지 문제들

[Baekjoon/JAVA] 백준 14659번 한조서열정리하고옴ㅋㅋ

양선규 2023. 6. 30. 01:44
728x90
반응형

문제
입/출력

 

n개의 봉우리(활잡이)가 존재합니다.

각 봉우리는 높이가 다르고, 높은 봉우리에 있는 활잡이가 낮은 봉우리를 처치할 수 있습니다.

공격은 오른쪽으로만 진행되고, 더 높은 봉우리를 만날 시 패배합니다.

이 때 가장 많은 적을 처치하는 봉우리는 몇명의 적을 처치할 수 있는지 출력해야 합니다.

 

 

import java.io.*;
import java.util.*;
public class Main {
	public static void main(String[] args) throws IOException {
		
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringBuilder sb = new StringBuilder();
		StringTokenizer st;
		
		int n = Integer.parseInt(br.readLine());
		int arr[] = new int[n];
		
		st = new StringTokenizer(br.readLine()," ");
		
		for(int i=0; i<arr.length; i++) {
			arr[i] = Integer.parseInt(st.nextToken());
		}
		
		int result = 0;
		
		for(int i=0; i<arr.length-1; i++) {
			int count = 0;
			
			for(int j=i; j<arr.length-1; j++ ) {
				
				if(arr[i] > arr[j+1]) {
					count += 1;
					
					if(count > result) {
						result = count;
					}
				}
				else {
					break;
				}
			}
		}
		System.out.println(result);
		
		br.close();
	}
}

 

arr 배열 안에 봉우리 높이들을 입력받았습니다.

2중 for문을 이용해 각 봉우리 높이를 전부 비교하였고, 높을 경우 count를 1개 올리고 낮을 경우 다음 봉우리로 넘어갔습니다.

그렇게 가장 높은 count(처치수)를 기록하면 그 값을 result 변수에 저장했고,

최종적으로 result를 출력하여 문제를 해결하였습니다. 

728x90
반응형