[#56][알고리즘] Gravity

삼성 코드아카데미 > Gravity

SW 문제해결 Self Study Book Ⅰ
(https://www.swexpertacademy.com/main/learn/course/subjectList.do?courseId=AVuPDN86AAXw5UW6)


C++풀이
#include <iostream>
#include <algorithm>
using namespace std;
int main() {
    int test, a, b, number, dp[100][100= { 0 }, count, answer;
    cin >> test;
    for (int i = 0; i < test; i++) {
        answer = 0;
        cin >> a >> b;
        // 2차원 배열에 값 저장
        for (int j = 0; j < a; j++) {
            cin >> number;
            int tmp = b - number;
            for (int k = b-1; k >= tmp; k--) {
                dp[k][j] = 1;
            }
        }
        
    
        for (int i = 0; i < b; i++) {
            for (int j = 0; j < a - 1; j++) {
                count = 0;
                // 상자가 존재할 때
                if (dp[i][j] == 1) {
                    for (int k = j + 1; k < a; k++) {
                        // 상자가 존재하지 않는 칸의 수를 COUNT에 저장
                        if (dp[i][k] == 0) {
                            count++;
                        }
                    }
                    //가장 큰 값 찾기
                    answer = max(answer, count);
                }
            }
        }
        //답 출력
        cout << answer << endl;
    }
    
    return 0;
}
cs


댓글

가장 많이 본 글