728x90
- 문제 사이트: https://www.acmicpc.net/problem/24723
입력된 수가 1부터 8까지 1씩 증가하는지 혹은 8부터 1까지 1씩 감소하는지 혹은 둘다 아닌지 확인하는 문제이다.
1) 입력 받은 첫번째 수 == start
2-1) 첫번째 수 == 1 인 경우, start 값을 1씩 증가시키면서 새로 입력 받는 숫자와 일치하는지 비교
--> 일치하지 않으면 "mixed" 출력
--> 끝까지 일치한다면 "ascending" 출력
2-2) 첫번째 수 == 8 인 경우, start 값을 1씩 감소시키면서 새로 입력 받는 숫자와 일치하는지 비교
--> 일치하지 않으면 "mixed" 출력
--> 끝까지 일치한다면 "descending" 출력
2-3) 첫번째 수가 1도 8도 아니라면, 둘 다 아니라면 "mixed" 출력
#include <iostream>
using namespace std;
int main()
{
int start, n;
bool check = true;
cin >> start;
if (start == 1)
{
while (start < 8)
{
start++;
cin >> n;
if (n != start)
{
check = false;
cout << "mixed\n";
break;
}
}
if (check)
cout << "ascending\n";
}
else if (start == 8)
{
while (start > 1)
{
start--;
cin >> n;
if (n != start)
{
check = false;
cout << "mixed\n";
break;
}
}
if (check)
cout << "descending\n";
}
else
cout << "mixed\n";
return 0;
}
- 메모리: 2020 KB
- 시간: 0 ms
- 코드 길이: 832 B
더 간단한 방법으로 입력 받은 문자열 자체를 비교하는 것이다.
확인 필요한 케이스가 단 두 케이스로 명확하기 때문에 사용 가능한 방법이다.
#include <iostream>
#include <string>
using namespace std;
int main()
{
string str;
getline(cin, str);
if (str == "1 2 3 4 5 6 7 8")
cout << "ascending";
else if (str == "8 7 6 5 4 3 2 1")
cout << "descending";
else
cout << "mixed";
return 0;
}
- 메모리: 2024 KB
- 시간: 0 ms
- 코드 길이: 293 B
728x90
'Algorithm > BackJoon' 카테고리의 다른 글
3046번: R2 (0) | 2023.07.09 |
---|---|
24723번: 녹색거탑 (0) | 2023.07.07 |
1269번: 대칭 차집합 (0) | 2023.07.05 |
10816번: 숫자 카드 2 (0) | 2023.07.04 |
10817번: 세 수 (0) | 2023.07.04 |
댓글