


내가 생각했을때 문제에서 원하는부분
첫째 줄에 봉우리의 수 겸 활잡이의 수 N이 주어진다. (1 ≤ N ≤ 30,000) 둘째 줄에 N개 봉우리의 높이가 왼쪽 봉우리부터 순서대로 주어진다.
(1 ≤ 높이 ≤ 100,000) 각각 봉우리의 높이는 중복 없이 유일하다.
최고의 활잡이가 처치할 수 있는 적의 최대 숫자를 출력한다.
내가 이 문제를 보고 생각해본 부분
입력된 정보를 저장한다.
각 활잡이가 오른쪽으로 쏘았을 때 처치하는 횟수를 탐색한다.
최고의 활잡이를 찾은 후 처치한 적의 횟수를 결과로 출력한다.
코드로 구현
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
// 백준 14659번 문제
public class Main654 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
int[] arr = new int[N];
StringTokenizer st = new StringTokenizer(br.readLine()," ");
// 봉우리 정보 저장
for(int i = 0; i < N; i++) {
arr[i] = Integer.parseInt(st.nextToken());
}
int answer = Integer.MIN_VALUE;
// 각 봉우리에 활잡이 탐색
for(int i = 0; i < N; i++) {
int count = 0;
int h = arr[i];
for(int j = i + 1; j < N; j++) {
if(h < arr[j]) { // 더 높은 봉우리 만났을때 종료
break;
} else { // 처치 성공
count++;
}
}
answer = Math.max(answer, count); // 최고의 활잡이 비교하기
}
System.out.println(answer + "");
br.close();
}
}

그리디 알고리즘 계속 풀고있는데 조금 어렵게 느껴진다. 다음에 이문제를 풀어볼때 이중 for문을 사용하지 않고 코드를 작성해 볼 생각이다.