[BOJ]1015-수열 정렬
2018. 8. 4. 00:00ㆍProblem Solving/BOJ
안녕하세요.
오늘은 백준 1015번을 풀어보겠습니다.
문제를 보겠습니다.
입출력 조건을 보겠습니다.
배열 A를 입력받고 수열 P를 출력하면 됩니다.
pair라는 변수는 두 가지 변수를 저장 할 수 있습니다.
이걸 사용하면 쉽게 풀 수 있습니다.
A[0] = 2 | P[0] = 0
A[1] = 3 | P[1] = 1
A[2] = 1 | P[2] = 2
풀이를 보겠습니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | #include<iostream> #include<algorithm> using namespace std; int main() { pair<int, int> A[50]; int Size, B[50]; cin >> Size; for (int i = 0; i < Size; ++i) { cin >> A[i].first; A[i].second = i; } sort(A, A + Size); for (int i = 0; i < Size; ++i) B[A[i].second] = i; for (int i = 0; i < Size; ++i) cout << B[i] << " "; } | cs |
A[i].first를 하면 첫 번째에 <int, int>에서 첫번째에 데이터가 들어가게 됩니다.
예를 들어 설명하면,
2, 3, 1이 입력이 들어오면 밑과 같이 됩니다.
A[0] = < 2, 0 >
A[1] = < 3. 1 >
A[2] = < 1. 2 >
위를 sort를 써서 정렬하면
A[0] = < 1, 2 >
A[1] = < 2, 0 >
A[2] = < 3, 1 >
이렇게 됩니다.
이걸 B[A[i].second]를 하게 되면 i 값이 배열 B에 해당하는 P가 됩니다.
감사합니다.
'Problem Solving > BOJ' 카테고리의 다른 글
[BOJ]11719-그대로 출력하기2 (0) | 2018.08.07 |
---|---|
[BOJ]11134-쿠키애호가 (0) | 2018.08.05 |
[BOJ]10804-카드 역배치 (0) | 2018.08.02 |
[BOJ]10799번-쇠막대기 (0) | 2018.07.31 |
[BOJ]10798번-세로읽기 (0) | 2018.07.22 |