[BAEKJOON] 1931번 : 신입사원 (JAVA)

2022. 3. 12. 12:18· Algorithm
반응형

- 알고리즘 분류 : 그리디

- 사용 언어 : JAVA

- 문제 요점

  1. 점수를 입력받는 것이 아닌, 등수를 입력받는 것임 (중요)
  2. 나를 제외한 모든 참가자와 비교를 해야함.
    1. 서류 등수와 면접 등수가 있음.
    2. 어떤 지원자 A의 성적이 다른 어떤 지원자 B의 성적에 비해 서류 심사 결과와 면접 성적이 모두 떨어진다면 A는 결코 선발되지 않는다.
    3. 서류 등수를 배열의 인덱스로 두고, 배열의 값을 면접 등수로 둔다.

 

이해가 잘 안됐던 문제이며, 이중 반복문을 쓰면 시간 제한으로 인해 쉽지 않았던 문제이다.

아래의 블로그를 보고 방향성을 잡았다.

 

참고한 블로그 : https://kosaf04pyh.tistory.com/113

 

[알고리즘 문제] 백준1946 - 신입사원

문제는 신입사원들의 서류/면접 성적이 있을 때 이 성적을 사용하여 신입사원을 채용하는 문제이다. 만약 나보다 서류/면접이 모두 좋은 사람이 한사람이라도 있다면 나는 탈락이게 된다. 만약

kosaf04pyh.tistory.com

 

소스 설명은 주석을 참고해주세요.

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{
		// TODO Auto-generated method stub
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		
		// T : 테스트케이스의 갯수
		int T = Integer.parseInt(br.readLine());
		
		// result : 테스트케이스의 각 결과를 가지는 배열
		int[] result = new int[T];
		
		// 테스트케이스의 수만큼 반복
		for(int i=0; i<T; i++) {
			
			// N : 사람의 수
			int N = Integer.parseInt(br.readLine());

			// 사람이 한 명일 때
			if(N==1) {
				result[i]=1;
				continue;
			}
			
			// 합격할 수 있는 사람의 수
			int count = 0;
			
			int[] scoreMap = new int[N+1];
			for(int j=0; j<N; j++) {
				StringTokenizer st = new StringTokenizer(br.readLine());
				
				// s1 : 서류 등수
				// s2 : 면접 등수
				int s1 = Integer.parseInt(st.nextToken());
				int s2 = Integer.parseInt(st.nextToken());
				
				scoreMap[s1] = s2;
			}
			
			// 서류 등수가 1등이라면 무조건 합격 
			// 1등의 면접 등수를 저장한다.
			int nowS2 = scoreMap[1]; 
			// count 증가
			count++;
			
			// 위에서 1등은 합격시켰으니, 2등부터 확인한다.
			for (int k = 2; k <= N; k++) {
				
				// 합격하기 위해서는 앞 사람의 면접 등수보다 높아야 한다.
                if (nowS2 >= scoreMap[k]) {
                	
                	// 앞 사람의 면접 등수보다 높다면
                	// count 증가
                	count++;
                	
                	// 앞 사람의 면접 등수를 최신화
                	nowS2 = scoreMap[k];
                    
                }
            }
			
			// 결과를 배열에 넣는다.
			result[i] = count;
		}
		
		// 결과 출력
		for(int i=0; i<T; i++) {
			System.out.println(result[i]);
		}
		
	}

}
반응형

'Algorithm' 카테고리의 다른 글

[BAEKJOON] 15686번 : 치킨배달 (JAVA)  (0) 2022.03.18
[BAEKJOON] 1261번 : 알고스팟 (JAVA)  (0) 2022.03.14
[BAEKJOON] 11399번 : ATM (JAVA)  (0) 2022.03.11
[BAEKJOON] 1504번 : 특정한 최단경로 (JAVA)  (0) 2022.03.10
[BAEKJOON] 1920번 : 수 찾기 (JAVA)  (0) 2022.03.09
'Algorithm' 카테고리의 다른 글
  • [BAEKJOON] 15686번 : 치킨배달 (JAVA)
  • [BAEKJOON] 1261번 : 알고스팟 (JAVA)
  • [BAEKJOON] 11399번 : ATM (JAVA)
  • [BAEKJOON] 1504번 : 특정한 최단경로 (JAVA)
멍목
멍목
개발 관련 새롭게 알게 된 지식이나 좋은 정보들을 메모하는 공간입니다.
반응형
멍목
김멍목의 개발블로그
멍목
전체
오늘
어제
  • 분류 전체보기 (514)
    • BE (190)
      • Spring (21)
      • Java (141)
      • Kotlin (6)
      • JPA (22)
    • FE (33)
      • Javascript (16)
      • Typescript (0)
      • React (5)
      • Vue.js (9)
      • JSP & JSTL (3)
    • DB (32)
      • Oracle (22)
      • MongoDB (10)
    • Algorithm (195)
    • Linux (8)
    • Git (6)
    • etc (42)
    • ---------------------------.. (0)
    • 회계 (4)
      • 전산회계 2급 (4)
    • 잡동사니 (2)

블로그 메뉴

  • 홈
  • 관리

공지사항

인기 글

태그

  • Effective Java
  • JPA
  • MongoDB with Node.js
  • 알고리즘 공부
  • 자바 개발자를 위한 코틀린 입문
  • 전산회계 2급 준비
  • MongoDB 공부
  • 자바공부
  • 자기 개발
  • 코테 공부
  • 프로젝트로 배우는 Vue.js 3
  • 더 자바 애플리케이션을 테스트하는 다양한 방법
  • 이펙티브 자바
  • JPA 공부
  • 코틀린
  • 이펙티브자바
  • Oracle
  • Java to Kotlin
  • 자기공부
  • 더 자바 Java 8
  • junit5
  • java 8
  • 코테공부
  • 자기개발
  • 자바 공부
  • 알고리즘공부
  • 자기 공부
  • MongoDB 기초부터 실무까지
  • 자바 테스팅 프레임워크
  • vue3 공부

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.0
멍목
[BAEKJOON] 1931번 : 신입사원 (JAVA)
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.