[Bronze I] 드높은 남산 위에 우뚝 선 - 21965
성능 요약
메모리: 1504 KB, 시간: 16 ms
분류
구현
제출 일자
2026년 04월 25일 22:04:59
문제 설명
드높은 남산 위에 우뚝 선
(중략)
세워라 반석 위에
선린의 터를
어떤 수열 $A$가 산이라는 것은, 수열이 어떤 지점 이전까지는 증가하다가, 해당 지점 이후부터는 감소하는 것을 의미한다. 다시 말해, $1 < j \leq i$인 $j$에 대해 $A_{j-1} < A_j$이고 $i < j \leq N$인 $j$에 대해 $A_{j-1} > A_j$를 만족하는 $N$ 이하의 자연수 $i$가 존재한다는 것을 의미한다.
예를 들어 1 2 3 4 2는 4번째 수까지는 증가하는 수열이고, 4번째 수 이후로는 감소하는 수열이므로 산이다($i = 4$). 1 2 3 4 5 역시 산이다($i = 5$). 하지만 1 2 2 3 1은 산이 아니다.
입력으로 주어지는 수열이 산인지 산이 아닌지 판별하는 프로그램을 작성하자.
입력
첫 번째 줄에는 수열의 길이 $N$이 주어진다.
두 번째 줄에는 $A_1, A_2, \cdots , A_N$이 공백으로 구분되어 주어진다.
출력
입력으로 주어진 수열 $A$가 산이면 "YES"를, 산이 아니면 "NO"를 출력한다.
💡 해결 방법
💻 코드
#include<stdlib.h>
#include<string.h>
#include<stdio.h>
int main(int argc, char *argv[])
{
int N = 0; scanf("%d", &N);
int *arr;
arr = (int*)malloc(sizeof(int) * N);
int top = 0;
for(int a = 0; a <N; a++)
{
scanf("%d", &arr[a]);
}
for(int a =1; a < N; a++)
{
if((arr[a-1] < arr[a]))
{
top = a;
}
else
break;
}
//printf("%d", top);
for(int a =top; a < N; a++)
{
if((a+1 < N) && (arr[a] <= arr[a+1]))
{
printf("NO");
return 0;
}
}
printf("YES");
return 0;
}