순위를 재는 방법을 헷갈려서 이해하는데 시간이 조금 걸렸다.
처음에는 벡터의 insert() 함수를 사용해 맞는 위치에 번호를 끼워넣는 방법으로 풀려고 했었는데 이런저런 오류들이 계속 나오고 맞왜틀 상태만 지속되는 바람에 결국에는 배열로 어거지로 풀었다.
최대 크기 만큼 배열의 크기를 할당해놓고 순위가 갱신되면 해당 순위의 뒤 요소들을 반복문으로 한 칸 씩 뒤로 이동시킨 후 채워넣었다.
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
int arr[101];
int ans[101];
int main() {
ios_base::sync_with_stdio(0);
cin.tie(0); cout.tie(0);
int n, m, rank, player, temp;
cin >> n >> m;
for (int i = 1; i <= n; i++) {
cin >> rank;
if (arr[rank] != 0 && i != 1) {
for (int j = i - 1; j >= rank; j--) {
arr[j + 1] = arr[j];
}
arr[rank] = i;
}
else { arr[rank] = i; }
}
for (int i = 1; i <= m; i++) {
cin >> rank;
player = arr[m - i + 1];
if (ans[rank] != 0 && i != 1) {
for (int j = i - 1; j >= rank; j--) {
ans[j + 1] = ans[j];
}
ans[rank] = player;
}
else { ans[rank] = player; }
}
for (int i = 1; i <= 3; i++) { cout << ans[i] << '\n'; }
return 0;
}
벡터를 사용해서 푸는 방법이 있을 것 같은데... 아쉽다
다른 스터디원은 연결 리스트를 사용해서 구현했다고 함
같이 C++을 사용하는 분도 벡터를 사용했다는데 왜 난 오류가 났을까 나중에 그 분 코드 한 번 봐야지