본문 바로가기

C++/백준

[C++][백준] [정렬] 3047 ABC

https://www.acmicpc.net/problem/3047

 

3047번: ABC

문제 세 수 A, B, C가 주어진다. A는 B보다 작고, B는 C보다 작다. 세 수 A, B, C가 주어졌을 때, 입력에서 주어진 순서대로 출력하는 프로그램을 작성하시오. 입력 첫째 줄에 세 수 A, B, C가 주어진다. 하지만, 순서는 A, B, C가 아닐 수도 있다. 세 수는 100보다 작거나 같은 자연수이다. 둘째 줄에는 A, B, C로 이루어진 세 글자가 주어지며, 이 순서대로 출력하면 된다. 출력 주어진 세 수를 주어진 출력 순서대로 출력하면

www.acmicpc.net

 

문제

세 수 A, B, C가 주어진다. A는 B보다 작고, B는 C보다 작다.

세 수 A, B, C가 주어졌을 때, 입력에서 주어진 순서대로 출력하는 프로그램을 작성하시오.

입력

첫째 줄에 세 수 A, B, C가 주어진다. 하지만, 순서는 A, B, C가 아닐 수도 있다. 세 수는 100보다 작거나 같은 자연수이다. 둘째 줄에는 A, B, C로 이루어진 세 글자가 주어지며, 이 순서대로 출력하면 된다.

출력

주어진 세 수를 주어진 출력 순서대로 출력하면 된다.

예제 입력 1

1 5 3

ABC

예제 출력 1

1 3 5

 

풀이

삽입정렬을 이용해서 풀었고 

A는 B보다 작고, B는 C보다 작기 때문에 A<B<C 이다.

따라서 정렬을 한 뒤 입력받은 ABC 순서대로 출력하면 되는 간단한 문제이다.

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
#include <iostream>
#include <string>
using namespace std;
#define swap(x,y,tmp)((tmp)=(x),(x)=(y),(y)=(tmp))
 
int main(){
    int list[3];
    string str;
    for(int i=0; i<3; i++)
        cin >> list[i];
    cin >> str;
 
    int least,tmp;
    for(int i=0; i<2; i++){
        least = i;
        int j;
        for(j=i+1; j<3; j++)
            if(list[j] < list[least])
                least = j;
        if(i!=least)
            swap(list[i], list[least], tmp);    
    }
    for(int i=0; i<3; i++)
        cout << list[str[i]-'A'<< " ";
 
}
 
http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4ftext-decoration:none">Colored by Color Scripter