본문 바로가기
백준 문제풀이

BOJ/8393

by alscks 2024. 1. 25.
차이를 최대로
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <algorithm>



int main() {

    int arr[8];

    int t;
    scanf("%d", &t);
    for (int i = 0; i < t; i++) {
        scanf("%d", &arr[i]);
    }
   
    int mem[8];
    for (int i = 0; i < t; i++) {
        mem[i] = arr[i];
    }

    int sum = -100;

    while (1) {
        int m = 0;
        for (int i = 0; i < t - 1; i++) {
            int s;
            s = arr[i] - arr[i + 1];
            if (s < 0) {
                s = -s;
            }
            m += s;
        }

        if (m > sum) {
            sum = m;
        }

        std::next_permutation(arr, arr + t); // t-1?

        int flag = 0;
        for (int j = 0; j < t; j++) {
            if (arr[j] != mem[j]) {
                flag = 1;
            }
        }

        if (flag == 0) {
            break;
        }

    }

    printf("%d", sum);

    return 0;
}​

순열 문제이다. 순열 라이브러리 next/prev_permutation을 사용하여 해결하였다. 초기 입력값을 저장해두고 계속 next_permutaion을 진행하여 다음 순열의 경우를 판단한다. 저장 수열을 통해 한바퀴 돌았으면 while문 탈출 후 정답 출력.

'백준 문제풀이' 카테고리의 다른 글

BOJ/1912  (1) 2024.01.28
BOJ/11650  (2) 2024.01.27
BOJ/1182  (0) 2024.01.25
BOJ/6603  (2) 2024.01.25
BOJ/1012  (1) 2024.01.24