백준 Silver5 7785 - 회사에 있는 사람

JH·2022년 9월 27일
0

백준 알고리즘

목록 보기
7/29
post-thumbnail

문제

입력

출력

예제

idea

해쉬맵을 이용하여 사람 이름을 key, 출퇴근을 value로 지정하여 출근했을 경우 해쉬맵에 저장을 하고 퇴근했을 경우 해쉬맵에서 제거한다.
고려할 사항이 몇가지 있었지만 파악을 못하여 실패를 몇번 하였다.

정리

아이디어는 위와 같음
단, 출력을 할 경우 사전의 역순으로 해야하는 것 확인.
또한 퇴근 후 다시 재출근 할 경우 동명이인이 없으므로 한번만 출력되어야 함.

Code

import java.util.*;

public class Main {

	public static void main(String[] args) {
		
		Scanner in= new Scanner(System.in);
		
		int x,y;
		String q,w;
		x=in.nextInt();
		
		HashMap<String, String> company = new HashMap<String, String>();
		List<String> name = new ArrayList<String>();
		
		for (int i=0;i<x;i++)
		{
			y=0;
			q=in.next(); // key
			w=in.next(); // value
				
			company.put(q, w);
			
			if(w.equals("leave")) //퇴근했다면 지워준다.
				company.remove(q);
			
				
		}		
		Set set = company.keySet(); //해쉬맵의 모든 키값 가져오기
		Iterator iterator = set.iterator(); //키값을 iterator을 이용하여 순차적으로 탐색할 준비를한다.
		
		for(int i=0;i<company.size();i++)
		{
			name.add((String)iterator.next()); //순차적으로 탐색하여 사람 이름을 배열에 저장.
		}
		Collections.sort(name); // 사전순서대로 정렬
		
		for (int i=company.size()-1;i>=0;i--) //역순으로 출력
		{		
				System.out.println(name.get(i));
			
		}
	}
}

결과

0개의 댓글