개발/자료구조, 알고리즘

[코딩 테스트] 소프티어(Softeer) 연습 문제 - 8단 변속기

growing-dev 2023. 2. 9. 21:33
반응형

코딩 테스트를 위한 소프티어(Softeer) 연습 문제 중 8단 변속기 문제를 풀어보았다.

 

연습 문제 - 8단 변속

  • 난이도 : level 2
  • 정답률 : 63%

https://softeer.ai/practice/info.do?idx=1&eid=408 

 

Softeer

연습문제를 담을 Set을 선택해주세요. 취소 확인

softeer.ai

 

문제 해설

8단 변속기 문제는 1부터 8까지의 숫자가 나열된 입력이 들어오면 ascending, descending, mixed 3가지의 결과를 출력하는 것이다. 1씩 증가하면 ascending, 1씩 감소하면 descending을, 일정하게 증가하거나 감소하지 않는 다면 mixed를 출력한다. 기본적인 문제로 판단되며, 효율적으로 조건식을 짤 수 있는지에 대한 문제인 것으로 보인다.

문제는 아주 간단하다. 우선 첫 번째와 두 번째 변속을 보고 ascending인지 descending인지 판단한다. 그다음 각 종류에 맞춰서 하나씩 loop를 돌면서 중간에 일정하게 증가하거나 감소하지 않는다면 mixed로 판단하고 loop를 종료한다.

 

코드

#include<iostream>

#include<string>
using namespace std;

int main(int argc, char** argv)
{
	int arr[8];
	int i;
	for (i=0;i<8;i++) {
		cin >> arr[i]; 
	}
	string a = "ascending";
	string d = "descending";
	string m = "mixed";
	string result;
	if (arr[0] +1 == arr[1]) {
		result = a;
		for (i=1;i<7;i++) {
			if (arr[i] + 1 != arr[i+1]) {
				result = m;
				break;
			}
		}
	}
	else {
		result = d;
		for (i=1;i<7;i++) {
			if (arr[i] - 1 != arr[i+1]) {
				result = m;
				break;
			}
		}
	}
		
	cout << result;
	
	return 0;
}

 

결론

문제 입력이 예외 케이스 없이 심플하게 1부터 8의 숫자가 한 번씩 들어오기 때문에 특별한 예외 조건 없이 맞춘 것 같다. 만약 엉뚱한 숫자나 뒤죽박죽의 케이스의 입력이 나온다면 더 예외처리가 필요할 것 같은 코드이다.

반응형