본문 바로가기
백준(Java)/23년 7월

[Java] 백준 - 1946번: 신입 사원

by C0MPAS 2023. 7. 19.

7월 19일(수)-그리디 알고리즘(1946번)

 

1946번: 신입 사원

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

www.acmicpc.net

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

 

문제점

1. 기존 C언어 풀이를 활용해보려했지만

구조체 형식의 유무 차이와, 그에따라서 first_score만으로 먼저 정렬하는 것이 어려워짐

-> 배열 arr를 새롭게 선언해서 arr[ first_score ] = second_score 형식으로의 저장으로 변경

-> 기존 C언어 풀이를 활용하는 방법도 추후에 추가해야함

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

 

풀이

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

import java.util.StringTokenizer;

public class Main {

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st;
        StringBuilder sb = new StringBuilder();

        int T = Integer.parseInt(br.readLine());
        for(int i=0; i<T; i++)
        {
            int N = Integer.parseInt(br.readLine());
            int[] arr = new int[N+1];
            
            for(int j=0; j<N; j++)
            {
                st = new StringTokenizer(br.readLine(), " ");
                int first_score = Integer.parseInt(st.nextToken());
                int second_score = Integer.parseInt(st.nextToken());
                arr[first_score] = second_score;
            }

            int count=1;
            int tmp = arr[1];
            for(int j=2; j<=N; j++)
            {
                if(tmp > arr[j])
                {
                    count++;
                    tmp = arr[j];
                }
            }
            sb.append(count).append("\n");
        }

        System.out.println(sb);
    }
}

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

댓글