※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※
이번에 볼 문제는 백준 17254번 문제인 키보드 이벤트이다.
문제는 아래 링크를 확인하자.
https://www.acmicpc.net/problem/17254
17254번: 키보드 이벤트
첫째 줄에 연결된 키보드의 개수 N과, 키보드를 누르게 될 횟수 M이 주어진다. (1 ≤ N, M ≤ 1,000) 다음 M개의 줄에 정수 a, b와 문자 c가 주어진다. 이는 a번 키보드로, b초에 문자 c가 적힌 키를
www.acmicpc.net
문제의 내용을 정리하면, 각각의 키보드 이벤트로 출력될 문자들은 (1) 누른 시각이 빠를수록, 누른 시각이 같다면 (2) 키보드 번호가 작을수록 먼저 출력됨을 알 수 있다.
위의 기준으로 전체 키보드 이벤트를 정렬하고, 해당 정렬된 순서대로 각 키보드 이벤트로 출력하게 되는 문자를 구해 문제를 해결하자. 이는 sort, pair등을 이용해 간단하게 구현할 수 있다.
아래는 제출한 소스코드이다.
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int N, M;
vector<pair<pair<int, int>, char>> vec;
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
cin >> N >> M;
while (M--) {
int i, j; char c; cin >> i >> j >> c;
vec.emplace_back(make_pair(make_pair(j, i), c));
}
sort(vec.begin(), vec.end());
for (auto &p:vec) cout << p.second;
}
728x90
'BOJ' 카테고리의 다른 글
[BOJ 11692 // C++] 시그마 함수 (3) | 2024.03.19 |
---|---|
[BOJ 5462 // C++] POI (0) | 2024.03.18 |
[BOJ 1680 // C++] 쓰레기 수거 (0) | 2024.03.16 |
[BOJ 17423 // C++] 민원이 넘쳐흘러 (0) | 2024.03.15 |
[BOJ 9512 // C++] Languages (0) | 2024.03.14 |