※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※
이번에 볼 문제는 백준 5602번 문제인 問題1이다.
문제는 아래 링크를 확인하자.
https://www.acmicpc.net/problem/5602
5602번: 問題1
1 行目は生 徒の人数 n と旅行候補の場所の数 m が空白で区切られ, i + 1 行に生徒 i のアン ケート結果を ○ は 1 で×は 0 で表し,空白で区切られた m 個の数字が並んでいる. 1 ≤ n ≤ 1000, 1
www.acmicpc.net
가장 많은 찬성표(1)을 받은 후보지부터, 같은 표의 경우 번호가 작은 후보지부터 하나씩 차례로 출력하는 문제이다.
{-찬성표 수, 후보지 번호}와 같은 pair를 오름차순으로 정렬한 뒤 차례대로 후보지 번호들만을 출력하면 문제의 조건을 만족하는 답을 얻을 수 있음을 관찰하자. 따라서 반복문을 이용해 주어진 앙케이트 결과를 읽어들여 위와 같은 pair들을 구하면 문제를 해결할 수 있다.
아래는 제출한 소스코드이다.
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int N, M;
pair<int, int> arr[100];
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
cin >> N >> M;
for (int i = 0; i < M; i++) arr[i].second = i;
while (N--) {
for (int i = 0; i < M; i++) {
int x; cin >> x;
if (x) arr[i].first--;
}
}
sort(arr, arr + M);
for (int i = 0; i < M; i++) cout << arr[i].second + 1 << ' ';
}
728x90
'BOJ' 카테고리의 다른 글
[BOJ 1071 // C++] 소트 (0) | 2023.03.14 |
---|---|
[BOJ 25936 // C++] Rain Gauge (0) | 2023.03.13 |
[BOJ 16397 // C++] 탈출 (0) | 2023.03.12 |
[BOJ 27659 // C++] Queue skipping (Easy) (0) | 2023.03.11 |
[BOJ 1358 // C++] 하키 (0) | 2023.03.11 |