728x90
https://www.acmicpc.net/problem/2920
[문제]
[코드]
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int a;
int cnt1 = 0;
int cnt2 = 0;
int arr[] = new int[8];
for(int i = 0; i < arr.length; i++) {
a = sc.nextInt();
arr[i] = a;
}
for(int i = 0; i < arr.length-1; i++) {
if(arr[i] == arr[i+1]-1)
cnt1++;
else if(arr[i] == arr[i+1]+1)
cnt2++;
}
if(cnt1 == 7)
System.out.println("ascending");
else if(cnt2 == 7)
System.out.println("descending");
else
System.out.println("mixed");
sc.close();
}
}
[설명]
1. 우선 for문을 돌려 8개의 숫자를 받는데, 그 수를 arr[i] = a;를 통해 배열에 0번째부터 7번째까지 넣어준다.
2. 수들이 차례대로 있는지 보기위해 다른 for문을 돌리는데 여기서 마지막 수는 비교할게 없기 때문에 arr.length-1까지 범위를 지정하고 돌려준다.
3. arr[i] == arr[i+1]-1 코드는 1부터 8까지 차례대로 연주했을 때 실행이 되고 cnt1를 증가 시킨다.
예를 들어 1 2 3 4 5 6 7 8을 입력했을 때
arr[0] = 1
arr[0+1] = 2 >> arr[0+1]-1 = 1...arr[6] = 7arr[6+1] = 8 >> arr[6+1]-1 = 7
4. arr[i] == arr[i+1]+1 코드는 8부터 1까지 차례대로 연주했을 때 실행되고 cnt2를 증가시킨다.
예를 들어 8 7 6 5 4 3 2 1을 입력했을 때
arr[0] = 8
arr[0+1] = 7 >> arr[0+1]+1 = 8
.
.
.
arr[6] = 2
arr[6+1] = 1 >> arr[6+1]+1 = 2
5. for문을 빠져나왔을 때 cnt1값이 7이면 1부터 8까지 차례대로 연주했다는 뜻이기때문에 ascending을 출력한다.
6. cnt2값이 7이면 8부터 1까지 차례대로 연주했다는 뜻이기 때문에 descending을 출력한다.
7. 둘 다 아니면 mixed를 출력한다.
[결과]
728x90
'백준(Baekjoon)' 카테고리의 다른 글
[백준/자바] 1546번: 평균 (0) | 2022.05.20 |
---|---|
[백준] 2908번: 상수 - 자바 (0) | 2022.05.19 |
[백준] 2675번: 문자열 반복 - 자바 (0) | 2022.05.18 |
[백준] 2577번: 숫자의 개수 - 자바 (0) | 2022.05.17 |
[백준] 10872번: 팩토리얼 - 자바 (0) | 2022.05.16 |