[BackJoon] 2491 수열 JAVA 풀이 실버4
https://www.acmicpc.net/problem/2491
문제
0에서부터 9까지의 숫자로 이루어진 N개의 숫자가 나열된 수열이 있다. 그 수열 안에서 연속해서 커지거나(같은 것 포함), 혹은 연속해서 작아지는(같은 것 포함) 수열 중 가장 길이가 긴 것을 찾아내어 그 길이를 출력하는 프로그램을 작성하라.
예를 들어 수열 1, 2, 2, 4, 4, 5, 7, 7, 2 의 경우에는 1 ≤ 2 ≤ 2 ≤ 4 ≤ 4 ≤ 5 ≤ 7 ≤ 7 이 가장 긴 구간이 되므로 그 길이 8을 출력한다. 수열 4, 1, 3, 3, 2, 2, 9, 2, 3 의 경우에는 3 ≥ 3 ≥ 2 ≥ 2 가 가장 긴 구간이 되므로 그 길이 4를 출력한다. 또 1, 5, 3, 6, 4, 7, 1, 3, 2, 9, 5 의 경우에는 연속해서 커지거나 작아지는 수열의 길이가 3 이상인 경우가 없으므로 2를 출력하여야 한다.
입력
첫째 줄에는 수열의 길이 N이 주어지고, 둘째 줄에는 N개의 숫자가 빈칸을 사이에 두고 주어진다. N은 1 이상 100,000 이하의 정수이다.
출력
첫째 줄에 가장 긴 길이를 출력한다.
-----------------------------------------------------------------------------------------------------------------------------------------------------------------
자잘하게 생각해야 되는부분이 정말 많다.
풀이를 다 한 후에 코드를 보면 정말 간단한데 플래그 초기화나 변수 초기화의 순서가 단! 하나라도! 위치가 잘못된다면
오답이나며 변수 초기화도 적절하게 안해주면 오답이다.
문제 자체는 쉬워보였으나 직접 풀어보면 고려할 부분이 많은 문제였으며, 테스트케이스 반례로
입력
1
1
을 실행시 0이 출력되는 경우가 있는데 count 변수의 초기값을 0으로 지정해서 그런것이다. 개수를 세어보면 1부터 시작하므로 초기값을 1로 주면 해결 될것.
진짜 금방풀줄알았는데 붙잡고있다보니 2시간걸림;;