SteffenLee

[BOJ]1015-수열 정렬 본문

Problem Solving/BOJ

[BOJ]1015-수열 정렬

SteffenLee 2018. 8. 4. 00:00

안녕하세요.

오늘은 백준 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<intint> 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
Comments