반응형
https://www.acmicpc.net/problem/2920
- 문제
- 문제 풀이
백준 2920번 음계는 브론즈 브론즈 2 난이도의 구현 문제이다. 이 문제에서는 8개의 숫자가 주어진다. 만약에 1부터 8까지 연속으로 주어지면 ascending을, 8부터 1까지 연속으로 주어지면 descending을, 둘 다 아니면 mixed를 출력하면 되는 문제이다.
이 문제는 되게 간단하게 풀 수 있다. 우선 배열 arr에 주어지는 숫자들을 입력받는다. 그리고 boolean형 변수 asc과 dsc을 true로 선언한다. 만약에 asc이 true면 ascending을 출력하고 dsc이 true면 descending을 출력하고 둘 다 false이면 mixed를 출력한다.
이제 for-loop을 int i = 0부터 i < 8까지 돌린다. 그리고 다음 숫자가 현재 숫자보다 크면 dsc을 false로 바꿔준다. 왜냐하면 다음 숫자가 현재 숫자보다 더 크기 때문에 연속으로 증가하지 않기 때문이다. 마찬가지로 다음 숫자가 현재 숫자보다 작으면 asc을 false로 바꿔준다.
for-loop이 끝나고 asc이 true면 ascending을 출력해주고 dsc이 true면 descending을 출력해준다. 그리고 둘 다 false면 mixed를 출력해준다.
자세한 코드는 밑에 있다.
- 코드
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int[] arr = new int[8]; //배열 선언
StringTokenizer st = new StringTokenizer(br.readLine());
//배열에 입력받기
for (int i = 0; i < 8; i++) {
arr[i] = Integer.parseInt(st.nextToken());
}
boolean asc = true;
boolean dsc = true;
for (int i = 0; i < 7; i++) {
//다음 숫자가 더 크면 descending은 안 된다
if (arr[i+1] > arr[i]) dsc = false;
//다음 숫자가 더 작으면 ascending은 안 된다
if (arr[i+1] < arr[i]) asc = false;
}
if (asc) {
System.out.print("ascending");
} else if (dsc) {
System.out.print("descending");
} else {
//asc, dsc 둘 다 아니면 mixed 출력
System.out.print("mixed");
}
}
}
반응형
'백준' 카테고리의 다른 글
[백준] 2960번 : 에라토스테네스의 체 – JAVA [자바] (0) | 2022.07.16 |
---|---|
[백준] 2775번 : 부녀회장이 될테야 – JAVA [자바] (0) | 2022.07.15 |
[백준] 15965번 : K번째 소수 – JAVA [자바] (0) | 2022.07.15 |
[백준] 1978번 : 소수 찾기 – JAVA [자바] (0) | 2022.07.15 |
[백준] 1929번 : 소수 구하기 – JAVA [자바] (0) | 2022.07.15 |
댓글