728x90
- 증가했다가 감소하는 수열인지 판별
(입력)
[1, 2, 3, 4]
[1, 2, 3, 4, 2, 1]
[1, 2, 2, 4, 2, 1]
(출력)
# for문 사용
public class Main {
private String solution(int[] nums) {
String result = "YES";
boolean peak = false;
for(int i=1; i<nums.length; i++) {
if(nums[i-1] == nums[i]) {
return "NO";
}
if(!peak) {
if(nums[i-1] > nums[i]) peak = true;
}
else {
if(nums[i-1] < nums[i]) return "NO";
}
}
if(!peak) return "NO";
return result;
}
public static void main(String[] args) {
Main T = new Main();
int[] nums = new int[]{1, 2, 3, 4};
int[] nums2 = new int[]{1, 2, 3, 4, 2, 1};
int[] nums3 = new int[]{1, 2, 2, 4, 2, 1};
System.out.println(T.solution(nums)); // NO
System.out.println(T.solution(nums2)); // YES
System.out.println(T.solution(nums3)); // NO
}
}
# while문 사용
public class Main {
private String solution(int[] nums) {
String result = "YES";
int n = nums.length;
int i = 0;
while(i+1 < n && nums[i] < nums[i+1]) i++; // 증가 부분수열
if(i==0 || i==n-1) return "NO"; // 증가수열 or 감소수열
while(i+1 < n && nums[i] > nums[i+1]) i++;
if(i != n-1) return "NO"; // 수열 끝까지 감소하지 않는 경우
return result;
}
public static void main(String[] args) {
Main T = new Main();
int[] nums = new int[]{1, 2, 3, 4};
int[] nums2 = new int[]{1, 2, 3, 4, 2, 1};
int[] nums3 = new int[]{1, 2, 2, 4, 2, 1};
System.out.println(T.solution(nums)); // NO
System.out.println(T.solution(nums2)); // YES
System.out.println(T.solution(nums3)); // NO
}
}
반응형
'전.java' 카테고리의 다른 글
[Java] 수열의 경우수 (0) | 2023.02.01 |
---|---|
[Java] 최대 길이 바이토닉 (0) | 2023.02.01 |
[Java] 가장 높은 증가수열 (0) | 2023.01.31 |
[Java] 제곱수 정렬 (0) | 2023.01.31 |
[Java] 공부시간 (0) | 2023.01.31 |