728x90
문제 11536
[ 문제 풀이 ]
입력받은 문자열이 내림차순인지 오름차순인지, 아니면 내림차순도 오름차순도 아닌 것인지 체크하는 문제입니다. 먼저, 입력받은 문자열을 String[] 배열에 저장하고, 0번째 인덱스와 1번째 인덱스를 확인해서 오름차순인지 내림차순인지 확인합니다. isIncrease 라는 boolean 타입의 변수를 생성하여 오름차순이면 true, 내림차순이면 false로 저장합니다.
이후 1번째 인덱스부터 (String[] 배열의 길이 - 1) 만큼 순회하며 정렬 기준이 유지되는지 확인해줍니다. 만약, isIncrease = true 인 상태에서, 배열 순회를 돌다가 현재 인덱스의 문자열이 다음 인덱스의 문자열보다 크다면 오름차순 정렬이 유지되지 않으므로 'NEITHER' 를 출력합니다. 반대의 경우도 성립합니다.
정렬이 유지될 경우 처음 설정해주었던 isIncrease 값을 출력하면 됩니다.
[ 코드 ]
import java.io.*;
public class Main {
private static int N;
private static String[] arr;
private static boolean isIncrease;
private static boolean neither = false;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
N = Integer.parseInt(br.readLine());
arr = new String[N];
for (int i = 0; i < N; i++) {
String s = br.readLine();
arr[i] = s;
}
isIncrease = arr[0].compareTo(arr[1]) < 0;
checkString(arr);
if (neither) {
bw.write("NEITHER");
} else {
if (isIncrease) bw.write("INCREASING");
else bw.write("DECREASING");
}
bw.flush();
}
private static void checkString(String[] s) {
for (int i = 1; i < N-1; i++) {
if (s[i].compareTo(s[i+1]) > 0) { // 내림차순
if (isIncrease) {
neither = true;
break;
}
} else { // 오름차순
if (!isIncrease) {
neither = true;
break;
}
}
}
}
}
728x90
'Algorithm > Baekjoon' 카테고리의 다른 글
[Baekjoon] 백준 2992번: 크면서 작은 수 (JAVA) (0) | 2023.11.10 |
---|---|
[Baekjoon] 백준 17413번: 단어 뒤집기 2 (JAVA) (0) | 2023.11.07 |
[Baekjoon] 백준 5052번: 전화번호 목록 (JAVA) (1) | 2023.11.06 |
[Baekjoon] 백준 11656번: 접미사 배열 (JAVA) (0) | 2023.11.05 |
[Baekjoon] 백준 9935번: 문자열 폭발 (Java) (1) | 2023.11.03 |