/* 다장조는 c de f g a b C 8개의 음으로 으루어져 있습닏. 숫자로 표현 합니다. 1 부터 9까지 차례대로면 ascending, 8부터 1까지 차례대로 연주한다면 decending, 둘다 아니면, mixed 연주한 순서가 주어졌을 때, 이것이 acending, descending mixed 인지 판별하는 프로그램을 작성하세요. 입력을 받고 솟팅을 한다음에 하나씩 비교해가면서, 아니면 break 로 나오면 되지요. 먼저 받은 것과 받은 것을 저장하는 것을 만들면 됩니다 오케이요. 3가지에 대해서 조사를 해야 하는데, 어떻게 해야하나요. flag 를 해서 if 문으로 넘겨야 하는지, */ #include <iostream> #include <algorithm> #include <string> using namespace std; int a[8] = { 0 }; int b[8] = { 0 }; string ans = {}; int flag = 0; void problem_in() { for (int i = 0; i < 8; i++) cin >> a[i]; } void solve() {
for (int i = 0; i < 8; i++) b[i] = a[i]; sort(b, b + 8);
for (int i = 0; i < 8; i++) { if (!(a[i] == b[i])) { flag = 1; break; } ans = "ascending"; } for (int i = 0; i < 8; i++) { if (!(a[i] == b[7-i])) { flag = 2; break; } ans = "descending"; } if ((flag == 1) ||(flag == 2)) ans = "mixed";
cout << ans << endl; } int main(void) { problem_in(); solve(); return 0; } |
포문에 대해서 이프문을 넣어야 하는 것인가? 어떻게 해야하지? 포문을 돌려야하는 것인가 이프문을 돌려야하는 것인가? 포문 엔스엔딩 아 오케이 여기에도 이프문을 넣어야 하는 군요. 오케이요.
8번 돌려서 하나를 모두 오케이이면,
#include <stdio.h> #include <iostream> using namespace std; int main() { int arr[8], a = 0, d = 0, m = 0, i; for (int i = 0; i < 8; i++) { cin >> arr[i]; if (i + 1 == arr[i]) a++; else if (8 - i == arr[i]) d++; } if (a == 8) cout << "ascending" << endl; else if (d == 8) cout << "descending" << endl; else cout << "mixed" << endl; return 0; } |
가장 직관적으로 바로바로 풀어써 써보도록 합니다. 규칙을 찾는 문제가 아니면,