Problem #79
2020. 10. 22. 14:09ㆍPS/도전
벌써 79번 문제다
주어진 수열의 한 원소를 수정해 단조 증가로 만들 수 있느냐가 문제
non decreasing 수열의 정의를 살펴보면 쉽다
정의 : 모든 n에 대해 a(n)<=a(n+1)
만약 한개 이하의 원소만 이상해서 단조 증가성을 깨트린다면 어떨까
x번째 원소라 하면
a(x-1) < a(x) and a(x) > a(x+1)
or
a(x-1) > a(x) and a(x) < a(x+1)
a(1) <= a(2) <= a(3) <= ...a(k)>a(k+1).. <= a(n-1) <= a(n)
이런 관계를 만족하는 수열에서
단 1개의 irregular가 등장해 부등호의 방향을 반대로 바꿔야 한다.
1. irregular의 개수를 세주기
1개 이하면 pass. 2개 이상이면 이 수열은 회복 불가
2. irregular가 나타나는 인덱스 k를 찾기.
3. 수열 복구하기
k==n-1 or a(k)<=a(k+2)이면 a(k+1)을 a(k) ~ a(k+2) 사이(경계 포함)의 임의의 수로 바꿔 주면 된다.
k==1 or a(k-1)<=a(k+1)이면 a(k)를 a(k-1)~a(k+1) 사이(경계 포함)의 임의의 수로 바꿔 주면 된다.
둘 다 아니면 이 수열은 회복 불가
728x90
'PS > 도전' 카테고리의 다른 글
DCP 124 (0) | 2020.12.07 |
---|---|
KOI 고등부 1,2번 문제집 완료 (1) | 2020.10.24 |
[도전 28일차] 기하 구현 끝판왕, 달팽이 (0) | 2020.10.10 |
정보과학올림피아드 1차 문제 형식 제안 (0) | 2020.09.09 |
Pause / 일시 중지 (0) | 2020.08.26 |