728x90
문제 링크 : https://www.acmicpc.net/problem/2920
백준 브론즈 2 문제 입니다.
내 코드
string _input = Console.ReadLine();
string[] s = _input.Split();
int[] _num = new int[8];
string _state = "";
int ascending = 0;
int descending = 0;
for (int i = 0; i < 8; i++)
{
_num[i] = int.Parse(s[i]);
}
for (int i = 0; i < 8; i++)
{
if (i == 7) break;
if (_num[i] < _num[i + 1] && ascending == i)
{
_state = "ascending";
ascending++;
}
else if (_num[i] > _num[i + 1] && descending == i)
{
_state = "descending";
descending++;
}
else
{
_state = "mixed";
break;
}
}
Console.WriteLine(_state);
코드 풀이 해석 내용
string _input = Console.ReadLine();
string[] s = _input.Split();
입력된 문자열을 읽고 공백을 기준으로 나누어 s 배열에 저장합니다.
int[] _num = new int[8];
정수형 배열 _num을 생성합니다.
8개의 숫자를 저장할 준비를 합니다.
string _state = "";
int ascending = 0;
int descending = 0;
상태를 저장할 _state변수를 생성하고 초기화합니다.
오름차순 및 내림차순 카운터를 생성하고 0으로 초기화합니다.
for (int i = 0; i < 8; i++)
{
_num[i] = int.Parse(s[i]);
}
문자열 배열 s에서 각 요소를 정수로 변환합니다.
변환 후 _num배열에 저장합니다.
for (int i = 0; i < 8; i++)
{
if (i == 7) break;
if (_num[i] < _num[i + 1] && ascending == i)
{
_state = "ascending";
ascending++;
}
else if (_num[i] > _num[i + 1] && descending == i)
{
_state = "descending";
descending++;
}
else
{
_state = "mixed";
break;
}
}
8가지 숫자를 돌며 두 가지 조건을 검사합니다.
1. 현재 숫자가 다음 숫자보다 작고, ascending 카운터가 현재 인덱스와 같으면 ascending 상태로 설정합니다.
그 다음 카운터를 증가 시킵니다.
2. 현재 숫자가 다음 숫자보다 크고, descending 카운터가 현재 인덱스와 같다면 descending 상태로 설정합니다.
그 다음 카운터를 감소 시킵니다.
3. 두 가지 조건을 만족하지 않으면 상태를 mixed로 설정하고 반복을 중단시킵니다.
Console.WriteLine(_state);
최종적으로 결정된 상태를 출력합니다.
실행 결과
728x90
'C#' 카테고리의 다른 글
백준 C# 2839 문제 풀이 (0) | 2024.09.16 |
---|---|
백준 C# 8958 문제 풀이 (0) | 2024.09.15 |
백준 C# 10250 문제 풀이 (0) | 2024.09.15 |
백준 C# 2231 문제 풀이 (0) | 2024.09.13 |
백준 C# 31403 문제 풀이 (0) | 2024.09.13 |