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);
}
}
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
'백준(Java) > 23년 7월' 카테고리의 다른 글
[Java] 백준 - 4963번: 섬의 개수 (0) | 2023.07.21 |
---|---|
[Java] 백준 - 17386번: 선분 교차 1 (0) | 2023.07.20 |
[Java] 백준 - 1158번: 요세푸스 문제 (0) | 2023.07.18 |
[Java] 백준 - 12865번: 평범한 배낭 (0) | 2023.07.17 |
[Java] 백준 - 11724번: 연결 요소의 개수 (0) | 2023.07.14 |
댓글