celina의 이것저것

[C++] 백준 10817번 - 세 수 본문

자료구조&알고리즘/백준

[C++] 백준 10817번 - 세 수

celinayk 2022. 12. 27. 18:50
반응형

문제

세 정수 A, B, C가 주어진다. 이때, 두 번째로 큰 정수를 출력하는 프로그램을 작성하시오. 

입력

첫째 줄에 세 정수 A, B, C가 공백으로 구분되어 주어진다. (1 ≤ A, B, C ≤ 100)

출력

두 번째로 큰 정수를 출력한다.

접근

숫자를 크기 순으로 정렬해야하니까 버블정렬을 사용했다

 

코드

#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <vector>

using namespace std;

int main() {

	vector<int>num(3);
	int n;
	for (int i = 0; i < num.size(); i++) {
		scanf("%d", &num[i]);
	}
	for (int i = 0; i < num.size()-1; i++) {
		for (int j = 0; j < num.size() - 1 - i; j++) {
			if (num[j] < num[j + 1]) {
				n = num[j];
				num[j] = num[j + 1];
				num[j + 1] = n;

			}
		}
	}
	printf("%d", num[1]);

	return 0;
}

 학습

버블정렬 말고 더 쉽게 할 수 있는 방법이 있는지 궁금하다. 다른 정렬방법도 공부해봐야겠다

 

 

++

새롭게 우선순위 큐를 이용해서 구현했다

#define _CRT_SECURE_NO_WARNINGS
#include <iostream>  
#include <queue>
using namespace std;

priority_queue<int> pq;

int main() {

    int n;

    for (int i = 0; i < 3; i++) {
        scanf("%d", &n);
        pq.push(n);
    }
     pq.pop();
     printf("%d ", pq.top());
      
    return 0;
}

출처

10817번: 세 수 (acmicpc.net)

 

10817번: 세 수

첫째 줄에 세 정수 A, B, C가 공백으로 구분되어 주어진다. (1 ≤ A, B, C ≤ 100)

www.acmicpc.net

 

 

Comments