티스토리 뷰

알고리즘/BOJ

[백준] 12873 기념품

세진짱 2018. 7. 17. 14:51

문제를 풀다가 가끔은 문법을 몰라서 고생하는 경우가 많다

이 문제는 그냥 시물레이션을 돌리면 된다

대신 다 돌지말고 %size해서 필요한 만큼만 돈다


vector의 이터레이터를 사용하면 쉽게 풀린다

이 문제 풀면서 알아두면 좋은건 vector->erase를 했을 때 

지워지는 것의 다음 주소를 반환하는 걸 알고있으면 편하다


소스코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include <vector>
using namespace std;
#define ll long long
int n;
int main() {
    scanf(" %d"&n);
    vector<int> a(n);
    for (int i = 0; i < n; i++) a[i] = i + 1;
    auto it = a.begin();
    for (int i = 1; i < n; i++) {
        ll num = ((ll)i*i*- 1) % a.size();
        for (int j = 0; j < num; j++) {
            it++;
            if (it == a.end()) it = a.begin();
        }
        it = a.erase(it);
        if (it == a.end()) it = a.begin();
    }
    printf("%d\n", a[0]);
}
cs


'알고리즘 > BOJ' 카테고리의 다른 글

[백준] 5670 휴대폰 자판  (0) 2018.07.18
[백준] 12887 경로 게임  (0) 2018.07.18
[백준] 12867 N차원 여행  (0) 2018.07.13
[백준] 15386 Birokracija  (3) 2018.07.12
[백준] 10767 Palindromic Paths  (0) 2018.07.11
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함