bool check[10];
int arr[10] = { 0, };

void go(int index, int n, int m) {
    if (index == m) {
        for (int i = 0; i < m; i++) {
         cout << arr[i]<<" ";
        }
        cout << "\n";
        return;
    }
    for (int j = 1; j <= n; j++) {
        if (check[j]) continue;
        check[j] = true;
        arr[index] = j;
        go(index + 1, n, m);
        check[j] = false;
    }
}
이 문제에서 go함수에서 return 되었을 때 go(index+1, n, m) 이후 check[j] = false; 가 실행되는 데,
go함수에 index+1로 값이 들어갔기에 return 후에 index값이 index+1이라고 생각해서 틀렸습니다.