아직은 정체성이 없는 블로그

[SWEA][D3][c++] 1208. [S/W 문제해결 기본] 1일차 - Flatten 본문

알고리즘 역량테스트 문제/SWEA

[SWEA][D3][c++] 1208. [S/W 문제해결 기본] 1일차 - Flatten

coooding 2020. 8. 10. 11:32

문제

1208. [S/W 문제해결 기본] 1일차 - Flatten

문제 링크

https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV139KOaABgCFAYh

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

풀이 과정

더 빨리, 더 효율적으로 풀 수 있는 문제이지만 한정된 범위에 충분한 시간으로 처리할 수 있을 것 같아서 정렬로 풀이하였다. 

 

단순하게 sort 함수를 이용하여 정렬 후 맨 끝 값에 맨 앞 값을 뺀값이 1 이하이면 반복문을 break 하고 그게 아니라면 끝 값에 -1 앞 값에 +1을 한 후 다시 정렬을 한다.

 

dump의 값 까찌 반복을 한 후 맨 끝 값과 맨 앞 값을 뺀 값을 출력한다.

 

코드

#include<iostream>
#include<algorithm>

using namespace std;

int main(int argc, char** argv)
{
    cin.tie(0);
	int test_case;
    int arr[100];
	for(test_case = 1; test_case <= 10; ++test_case)
	{
        int dump;
        cin >> dump;
        for(int i=0; i<100; i++){
        	cin >> arr[i];
        }
        sort(arr,arr+100);
        while(dump--){
            if(arr[99]-arr[0]<=1)
                break;
            arr[99]--;
            arr[0]++;
            sort(arr,arr+100);
        }
        cout<<"#"<<test_case<<" "<<arr[99]-arr[1]<<"\n";


	}
	return 0;
}

 

Comments