반응형
https://www.acmicpc.net/problem/3047
문제
세 수 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
예제 입력 2 복사
6 4 2
CAB
예제 출력 2 복사
6 2 4
풀이
1. 3개의 수를 오름차순으로 정렬한다. input 1 5, 3 => 1, 3, 5
2. 길이가 3인 문자열을 입력해서 A는 가장 작은 수, B는 가운데 수, C는 가장 큰 수를 순서대로 출력한다.
3. 문자열이 꼭 ABC가 아니고 BAC, CAB 등등 이런 문자열이 나오기 때문에 2번의 내용대로 규칙을 정했다.
- 코드를 보면서 풀이 내용을 보면 더 쉽게 이해가 갈것 같다.
코드
#include <iostream>
#include <string> // 문자열 string
#include <algorithm> // sort
#include <vector> // vector
using namespace std;
int main() {
string str;
vector<int> vec;
for(int i=0; i<3; i++){
int n;
cin>>n;
// 입력받은 3개의 n을 백터 배열에 넣는다.
vec.push_back(n);
}
cin>>str;
// 오름차순으로 정렬
sort(vec.begin(), vec.end());
int len = str.length();
for(int i=0; i<len; i++){
// 문자 'C'가 나오면 가장 큰수 출력
if(str[i]=='C'){
// 배열의 가장 마지막 수는 '\0', NULL값 즉, 쓰래기 값이기 때문에 -1을 꼭 해주어야 한다.
cout<<vec[len-1]<<" ";
}
// 문자 'A'가 나오면 가장 작은 수 출력
else if(str[i]=='A'){
cout<<vec[0]<<" ";
}
// 문자 'B'가 나오면 가운데 수 출력
else{
cout<<vec[1]<<" ";
}
}
return 0;
}
// 1 5 3
// ABC
// == 135
|
cs |
반응형
'백준 > C++' 카테고리의 다른 글
[BaeKJoon/C++] 백준 9946 c++ 단어 퍼즐 (0) | 2022.02.23 |
---|---|
[BaeKJoon/C++] 백준 8974 c++ 희주의 수학시험 (0) | 2022.02.22 |
[BaeKJoon/C++] 백준 11637 c++ 인기투표 (0) | 2022.02.20 |
[BaeKJoon/C++] 백준 5585 c++ 거스름돈 (0) | 2022.02.19 |
[BaeKJoon/C++] 백준 5363 c++ 요다 (0) | 2022.02.18 |