목록Set (3)
컴굥일지

문제 https://www.acmicpc.net/problem/7662 문제 내용 I연산은 뒤에 오는 수를 이중 우선순위 큐에 "삽입"하는 연산이다. D -1 연산은 최솟값을 이중 우선순위 큐에서 "삭제"하는 연산이고, D 1 연산은 최댓값을 이중 우선순위 큐에서 "삭제"하는 연산이다. 이중 우선순위 큐에 원소가 없을 때 D연산이 들어오면, 그냥 무시한다. 이중 우선순위 큐에는 같은 원소가 여러번 들어갈 수 있다. 우리는 모든 연산이 끝난 후, 비어있다면 EMPTY를, 그렇지 않으면 최솟값과 최댓값을 출력하면 된다. 문제 풀이 문제 이름은 이중 "우선순위 큐" 이지만, 문제를 잘 보면, 최대/최솟값을 모두 찾아야 함을 알 수 있다. 따라서 heap(priority_queue)가 아니라 set을 사용할 예..

문제 링크&사진 문제 내용 출석이 되기 위해서는 개강총회가 시작할 때까지 입장을 하고, 개강총회가 끝나고부터 스트리밍이 종료될 때 나가야 한다. 각 학생들의 채팅 기록과 닉네임이 주어질 때, 출석이 된 학생의 수를 모두 세면 된다. 문제 풀이 개강 총회가 시작되는 S 시간과 같거나 더 빠른 시간에 채팅이 남아있는 사람을 unordered_set에 추가한다. 이후 개강총회가 끝나는 E 시간부터 스트리밍이 끝나는 Q 시간까지 남아있는 사람 중, 제시간에 출석을 한 사람만 다시 unondered_set에 추가한다. 이후 크기를 구해서 출력해주면된다. 시간 비교가 이 문제에서 그나마 까다로운 부분인 것 같은데, 나는 substr()을 통해 시간과 분을 따로 비교해 주었다. 코드 #include #include ..

문제 https://www.acmicpc.net/problem/1181 문제 내용 단어를 입력받아서 조건에 따라 정렬하여 출력하면 된다. 1. 길이가 짧은 것부터 2. 길이가 같으면 사전 순으로 ** 단, 같은 단어는 1번만 출력한다 (중복 제거하기)** 문제 풀이 조건 1, 2는 그냥 vector로 입력받아서 정렬 기준을 새로 정해서 sort()하면 되었었다. 다만, 추가 조건에 중복을 제거하라고 했기 때문에 set을 사용해서 문제를 풀었다. set에서 정렬의 기준을 바꾸려면 구조체를 선언하여 비교를 해야 한다. 그리고 vector처럼 정렬을 나중에 sort()를 써서 하는 것이 아니라, 애초에 set을 선언할 때 두 번째 인자로 미리 만든 구조체를 넣어 주어야 한다. 코드 #include #inclu..