728x90
반응형
문제
정답
첫 번째 방법
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
String result = "";
int presentNum = Integer.parseInt(st.nextToken());
if(presentNum == 1) {
int num = 1;
for(int i = 0; i < 7; i++) {
num++;
presentNum = Integer.parseInt(st.nextToken());
if(presentNum == num) {
result = "ascending";
continue;
} else {
result = "mixed";
break;
}
}
} else if(presentNum == 8) {
int num = 8;
for(int i = 0; i < 7; i++) {
num--;
presentNum = Integer.parseInt(st.nextToken());
if(presentNum == num) {
result = "descending";
continue;
} else {
result = "mixed";
break;
}
}
} else {
result = "mixed";
}
System.out.print(result);
}
}
위 로직으로 첫 시도를 해보다가 안 되서 아래 방법으로 정답을 맞추었는데요
안되는 이유를 알아내고 위 코드로 정답을 맞추었습니다!
안됐던 이유는 이전에 다른 알고리즘 문제를 풀면서도 실수했던 부분인데
if(Integer.parseInt(st.nextToken())){
}
위 코드처럼 if 조건문 안에 바로 StringTokenizer 값을 받으면
값이 저장이 안되고 바로 소멸해버리게 됩니다.
그러니 아래 코드처럼 변수에 담아주고사용해야 의도대로 로직을 작성할 수 있습니다.
int presentNum = Integer.parseInt(st.nextToken());
두 번째 방법
import java.io.IOException;
import java.util.Scanner;
public class Main {
public static void main(String[] args) throws IOException {
Scanner sc = new Scanner(System.in);
int[] nums = new int[8];
for(int i = 0; i < 8; i++) {
nums[i] = sc.nextInt();
}
String result = "";
for(int j = 0; j < nums.length - 1; j++){
if(nums[j+1] == nums[j] + 1) {
result = "ascending";
} else if(nums[j+1] == nums[j] - 1) {
result = "descending";
} else {
result = "mixed";
break;
}
}
System.out.print(result);
}
}
위 로직처럼 오름차순, 내림차순 로직으로 문제를 푸는게
훨씬 간단해 보이기는 합니다 :)
728x90
반응형
'Computer Science (CS) > 알고리즘' 카테고리의 다른 글
[백준/Java] 4153번 직각삼각형 (2) | 2024.10.08 |
---|---|
[백준/Java] 8958번 OX퀴즈 (1) | 2024.10.08 |
[백준/Java] 2577번 숫자의 개수 (1) | 2024.09.30 |
[백준/Java] 2741번 N 찍기 (1) | 2024.09.23 |
[백준/Java] 2475번 검증수 (0) | 2024.09.23 |