https://www.acmicpc.net/problem/2920
2920번: 음계
다장조는 c d e f g a b C, 총 8개 음으로 이루어져있다. 이 문제에서 8개 음은 다음과 같이 숫자로 바꾸어 표현한다. c는 1로, d는 2로, ..., C를 8로 바꾼다. 1부터 8까지 차례대로 연주한다면 ascending, 8
www.acmicpc.net
배열을 직접적으로 assign(=)해서 사용하게 되면, 둘 중 한 개만 배열 값 변화가 일어나도 나머지 한 개까지 전부 변하게 된다. 아마 값을 복사하는 게 아니라 배열이 가리키는 참조값(주소)를 그대로 복사해오기 때문일 것이다. 따라서 clone() 메소드를 이용해 값을 복사해준 후 오름차순과 내림차순에 대한 체크를 따로따로 해준 후 문제를 해결하였다.
문제 및 입출력
코드
import java.util.Arrays;
import java.util.Collections;
import java.util.Scanner;
public class Main
{
public static void main(String[] args)
{
Scanner sc = new Scanner(System.in);
Integer[] melody = new Integer[8];
for(int i=0; i<8; i++)
{
melody[i] = sc.nextInt();
}
// 오름차순과 내림차순을 체크할 수 있는 배열, 변수를 각각 설정
Integer[] isAsc = melody.clone();
Integer[] isDesc = melody.clone();
boolean chkAsc = true;
boolean chkDesc = true;
Arrays.sort(isAsc);
Arrays.sort(isDesc, Collections.reverseOrder());
// 오름차순 배열값과 다른 지 체크
for(int i=0; i<melody.length; i++)
{
if(melody[i]!=isAsc[i])
{
chkAsc = false;
break;
}
}
// 내림차순 배열값과 다른 지 체크
for(int i=0; i<melody.length; i++)
{
if(melody[i]!=isDesc[i])
{
chkDesc = false;
break;
}
}
// 체크결과 2개를 조합해 결과값 출력
System.out.println(chkAsc?"ascending":chkDesc?"descending":"mixed");
sc.close();
}
}
'[ 다먹살 ] > - Coding' 카테고리의 다른 글
[백준] 11050 이항계수1 (0) | 2021.11.07 |
---|---|
[백준] 10816 숫자 카드2 (0) | 2021.11.05 |
[백준] 1032 명령 프롬포트 (0) | 2021.11.04 |
[프로그래머스] 레벨4 우유와 요거트가 담긴 장바구니 (7) | 2021.11.04 |
[백준] 10798 세로읽기 (0) | 2021.11.04 |
댓글