이 글은 Obsidian에서 마이그레이션되었으며, 그 과정에서 AI의 도움을 받았습니다. 오류나 누락된 내용이 있다면 댓글로 알려주세요!
문제
풀이
아이디어
문제에서는 음계라고 표현하긴 했지만 결론적으로 문제에서 요구하는 바는 1부터 8까지의 숫자를 입력받고, 그 순서가 1. 오름차순인지(ascending), 2. 내림차순인지(descending), 3. 임의의 순서인지(mixed)를 구분하라는 것이다.
무조건 8개의 숫자가 입력되고, 그 구성도 1부터 8까지의 숫자임을 이용해서, 가장 첫번째로 입력된 값이 1이면 나머지 입력들이 오름차순인지 확인하고, 8이면 나머지 입력들이 내림차순인지 확인했다.
만약에 가장 첫번째로 입력된 값이 1과 8 모두 아니라면 해당 배열은 오름차순도, 내림차순도 될 수 없으므로 임의의 순서 라고 출력해주었다.
코드
/*2021-10-292920_음계https://www.acmicpc.net/problem/2920*/# include <iostream>using namespace std;int main(){int input[8];int status; // 0: ascending, 1: descendingfor(int i = 0; i < 8; i++)cin >> input[i];if (input[0] != 1 && input[0] != 8){cout << "mixed";return (0);}for (int i = 0; i < 7; i++){if (i == 0 && input[i] == 1)status = 0;else if (i == 0 && input[i] == 8)status = 1;// 증가하는 상황인데 조건에 맞지 않는 경우if (status == 0 && (input[i] > input[i + 1])){cout << "mixed";return (0);}// 감소하는 상황인데 조건에 맞지 않는 경우else if (status == 1 && (input[i] < input[i + 1])){cout << "mixed";return (0);}}if (status == 0)cout << "ascending";elsecout << "descending";return (0);}
end