티스토리 뷰

반응형

https://www.acmicpc.net/problem/1946

 

1946번: 신입 사원

첫째 줄에는 테스트 케이스의 개수 T(1 ≤ T ≤ 20)가 주어진다. 각 테스트 케이스의 첫째 줄에 지원자의 숫자 N(1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개 줄에는 각각의 지원자의 서류심사 성

www.acmicpc.net


⊙ 문제

⊙ 입력

⊙ 출력

⊙ 예제 입출력

⊙ 알고리즘 분류

  • 그리디 알고리즘
  • 정렬

 


 

⊙ 문제 접근 과정

 

만약 이 문제가 안 풀린다면, 문제 자체가 이해가 안 될 확률이 높다고 생각한다.

 

서류 순위 면접 순위
1 4
2 3
3 2
4 1
5 5

 

  1. 먼저 서류 순위로 정렬한다.
  2. 서류가 1등인 사람의 면접 순위는 4등이다.
  3. 그다음 서류 2등과 비교! 만약 서류 2등의 면접 순위가 4등보다 아래, 즉 5등이면 포함되지 않는다.
  4. 만약 3등 이상이면 count에 포함. 그리고 면접순위를 3위로 갱신! 다시 윗단계로
  5. 반복!

이번 문제 진짜 억울했던 부분.

마지막 결과 출력에 줄바꿈을 안 해줘서 계속 틀렸다고 나왔다........

여러분들은 꼭 줄바꿈 넣으세요..! 그리고 벡터 선언도 main 안에서 안 하면 시간 초과..


 

⊙ 문제 풀이

 

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

int T,N;

int main() {
    cin >> T;

    while(T--) {
        cin >> N;
        
        vector<pair<int,int>> grades;
        
        for(auto i=0;i<N;i++) {
            int x,y;
            cin >> x>>y;
            grades.push_back({x,y});
        }

        sort(grades.begin(),grades.end());

        int temp=0;
        int result=1;

        for(auto i=1;i<N;i++) {
            if(grades[temp].second > grades[i].second) {
                result++;
                temp=i;
            }
        }
        cout << result<<"\n";
    }
}

⊙ 결과

 


⊙ 마무리

 

 

NONE

 

좋아요는 로그인하지 않아도 누를 수 있습니다!

728x90
반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함