C로 구현한 14659번 한조서열정리하고옴ㅋㅋ 문제 풀이입니다.
https://www.acmicpc.net/problem/14659
#include <stdio.h>
int main() {
int arr[100001] = {0,};
int n, max = 0, result = 0;
scanf("%d", &n);
for(int i=0; i<n; i++) {
scanf("%d", &arr[i]);
}
for(int i=0; i<n-1; i++) {
if(arr[i] != 0) {
int count = 1;
while(arr[i] > arr[i+count]) {
if(arr[i+count] == 0)
break;
arr[i+count] = 0;
result ++;
count ++;
}
}
if (result > max) {
max = result;
}
result = 0;
}
printf("%d", max);
}
최고의 활잡이가 처치할 수 있는 적의 최대 숫자에 해당하는 max 변수와
현재 활잡이가 처치한 적의 수에 해당하는 result 변수를 선언한다.
N개의 봉우리의 높이 입력 수행을 마친 뒤 반복문을 통해 최고의 활잡이가 처치할 수 있는 적의 최대 숫자를 출력한다.
여기서 마지막 활잡이는 처치할 수 있는 적의 수가 0이기 때문에 반복문 범위를 n-1까지로 설정한다.
반복문 내부에서는 현재의 봉우리 높이가 다음 봉우리 높이보다 클 경우 다음 활잡이를 처치하여 0으로 만들고
처지한 적의 수를 1 증가 시킨다.
이러한 과정을 while문을 통해 자신의 봉우리 높이보다 더 큰 봉우리 높이가 나올 때까지 반복한다.
최종적으로 현재 활잡이가 처치한 적의 수와 지금까지의 최고 활잡이가 처치한 적의 수를 비교하여 더 큰 수를
max 변수에 할당한 뒤 출력한다.
'백준(C언어) 풀이 > 그리디(Greedy) 알고리즘' 카테고리의 다른 글
백준(C) 2720번 세탁소 사장 동혁 풀이 (0) | 2021.08.18 |
---|---|
백준(C) 10162번 전자레인지 풀이 (0) | 2021.08.18 |
백준(C) 2437번 저울 풀이 (0) | 2021.08.06 |
백준(C) 2217번 로프 풀이 (0) | 2021.08.03 |
백준(C++) 2217번 로프 풀이 (0) | 2021.08.03 |