-
[BOJ]백준 17254번: 키보드 이벤트Problem Solving/BOJ(백준) 2019. 6. 23. 16:03
https://www.acmicpc.net/problem/17254
문제는 길지만, 정렬을 응용하여 풀 수 있는 간단한 문제였다
입력은 키보드 넘버 N, 키보드 입력 횟수 M과
각 M개의 입력에 대한 A번 키보드로 B초에 문자 C가 적힌 키를 누를 때, 화면에 출력될 글자는?
우선순위는 시간>키보드번호(오름차순)이다.
정렬할 때 고려해야 할 사항이 두 가지 이상일 때, 정렬 비교 함수 cmp 작성 능력을 기르기 좋은 문제인듯
일단 세 변수를 한번에 저장할 수 있는 구조체 S를 선언,
1. 정렬하는데 필요한 자료형 변수 두 개를 받아온다
2. 우선순위가 높은 멤버부터 먼저 써줌
3. 반환할 때는 오름차순일 경우 < (오른쪽<왼쪽), 내림차순일 경우 > (왼쪽>오른쪽)
#include <cstdio> #include <algorithm> using namespace std; struct s { int a, b; char c; }; bool cmp(s k1, s k2) { if (k1.b != k2.b)return k1.b < k2.b; return k1.a < k2.a; } int main() { int n, m; scanf("%d%d", &n, &m); s* key = (s*)malloc(sizeof(s)*m); for (int i = 0; i < m; i++)scanf("%d%d %c", &key[i].a, &key[i].b, &key[i].c); sort(key, key + m, cmp); for (int i = 0; i < m; i++)printf("%c", key[i].c); return 0; }
정렬한 뒤 그대로 출력하면 끝!
'Problem Solving > BOJ(백준)' 카테고리의 다른 글
[BOJ]백준 11403번: 경로 찾기 (322) 2019.07.05 [BOJ]백준 16198번: 에너지 모으기 (418) 2019.06.24 [BOJ]백준 17144번: 미세먼지 안녕! (440) 2019.06.23 [BOJ]백준 11559번: Puyo Puyo (424) 2019.05.17 [BOJ]백준 16917번 : 양념 반 후라이드 반 (398) 2019.04.26