본문 바로가기

백준

11949 번호표 교환

설명이 난잡해서 이해를 못했음..

 

처음에 i번째 학생이라고 썼다가 규칙 설명할 때 i번 카드 (카드임 번호표 아님) 주는 것도 그렇고

 

그냥 Aj % i랑 Aj+1 % i랑 비교한다고 하지 그걸 굳이 j번 학생이 j + 1번 학생에게 카드를 주고 비교를 한다고 하는 것도 그렇고

 

M개의 카드 학생에게 주고 넘기고 버리고 번호표 카드 번호표 카드 i번째 학생의 카드 (ㅈㅅ)

 

암튼 헷갈리고 내가 생각한대로 안 돌아가서 패스했음

 

나중에 하나하나 적어보니 어떻게 돌아가는지 알겠다

 

아 게다가 중간에 연산 잘못한 것도 있어서 더 그런듯 3 % 1을 몫으로 생각해서 3과 2인줄 알았다ㅋㅋ

 

하지만 인덱스와 번호표와 카드 번호 넘 헷갈려

 

 

로직은 이렇게 돌아간다

 

#include <iostream>
#include <algorithm>
#include <vector>
#include <string>
#include <functional>
#include <string>
#include <queue>
#include <stack>
#include <set>
#include <map>
#include <cmath>
#include <cstring>
#include <bitset>

#define xx first
#define yy second
#define all(x) (x).begin(), (x).end()
#define MOD 1000000009

using namespace std;
using i64 = long long int;
using ii = pair<int, int>;
using ii64 = pair<i64, i64>;
using iii = tuple<int, int, int>;

int main() 
{
    int n, m;
    cin >> n >> m;

    vector<int> v(n + 5);
    for (int i = 1; i <= n; i++)
        cin >> v[i];

    for (int i = 1; i <= m; i++)
    {
        for (int j = 1; j < n; j++)
        {
            if (v[j] % i > v[j + 1] % i)
                swap(v[j], v[j + 1]);
        }
    }

    for (int i = 1; i <= n; i++)
        cout << v[i] << endl;

    return 0;
}

'백준' 카테고리의 다른 글

5622 다이얼  (0) 2020.09.28
1166 선물  (0) 2020.09.26
15993 1, 2, 3 더하기 8  (0) 2020.09.26
14442 벽 부수고 이동하기 2  (0) 2020.09.25
15739 매직스퀘어  (0) 2020.09.25