백준 7785번: 회사에 있는 사람 [정렬][Set] -Java :: 매운코딩
728x90
300x250

 

백준 7785번: 회사에 있는 사람 [정렬][Set] -Java 

 

자료구조 Set을 써야 가장 적절한데.. Set의 사용법이 익숙치않아서 Map을 쓴 case.

순서를 관리하는 TreeSet 을 썼으면 완벽했을듯 !

시간복잡도는 O(N)이것찌?

 

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

 

7785번: 회사에 있는 사람

첫째 줄에 로그에 기록된 출입 기록의 수 n이 주어진다. (2 ≤ n ≤ 106) 다음 n개의 줄에는 출입 기록이 순서대로 주어지며, 각 사람의 이름이 주어지고 "enter"나 "leave"가 주어진다. "enter"인 경우는

www.acmicpc.net

 

728x90

 

package algorithm.boj;

import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.Map;
import java.util.StringTokenizer;

public class Boj7785 {

	public static void main(String[] args) throws IOException {
		// TODO Auto-generated method stub

		System.setIn(new FileInputStream("Test.txt"));
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		
		StringTokenizer st = new StringTokenizer(br.readLine());
		
		int N = Integer.parseInt(st.nextToken());
		Map<String,Integer> enterMap = new HashMap<String,Integer>();
		
		for (int i = 0; i < N; i++) {
			st = new StringTokenizer(br.readLine());
			
			String name = st.nextToken();
			String log = st.nextToken();
			
			if(log.equals("enter"))
				enterMap.put(name, 1);
			if(log.equals("leave"))
				enterMap.remove(name);
		}
		
		
		ArrayList<String> list = new ArrayList<String>();
		
		for(String s : enterMap.keySet()) {
//			System.out.println(s);
			list.add(s);
		}
		
		Collections.sort(list, new Comparator<String>() {

			@Override
			public int compare(String o1, String o2) {
				if (o1.compareTo(o2) < 0)
					return 1;
				else
					return -1;
			}
		
		});
		
//		Collections.sort(list, Collections.reverseOrder());
		
		for (int i = 0; i < list.size(); i++) {
			System.out.println(list.get(i));
		}
		
	}

}
728x90

+ Recent posts