BOJ

[JAVA] 백준 5107번 - 마니또

yujinkimkim 2023. 7. 20. 15:02

5107번: 마니또 (acmicpc.net)

 

5107번: 마니또

N명의 사람들이 있다. 이들은 각자 다른 한 명의 이름이 적힌 쪽지를 받아서, 그 사람에게 몰래 선행을 베푼다. 이때 자기 자신의 이름을 받을 수는 없으며, 선행을 받은 사람은 누가 자신을 도와

www.acmicpc.net

오잉 틀렸습니다 나올줄 알고 습관처럼 대기하고 있었는데 바로 통과해서 먼가 놀랐슴니다

package baekjoon;
import java.util.*;
import java.io.*;

public class b5107 {

	public static void main(String[] args) throws IOException{
		// TODO Auto-generated method stub
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
		StringTokenizer st;
		
		int N = Integer.parseInt(br.readLine());
		for(int i = 1 ; ; i++)
		{
			Map <String, String> arr = new HashMap();
			String startArr[] = new String[20];
			int cnt = 0;
			
			for(int j = 0 ; j < N ;j++)
			{
				st = new StringTokenizer(br.readLine());
				String a = st.nextToken();
				String b = st.nextToken();
				startArr[j] = a;
				arr.put(a, b);
			}
			
			String end;

			for(String start : startArr)
			{
				end = arr.get(start);
				while(true)
				{
					end = arr.get(end);
					if(end == null)
						break;
					else if(end.equals(start))
					{
						cnt++;
						//arr.values().remove(end);
						arr.keySet().remove(end);
						break;
					}
				}
			}
			System.out.println(i+" "+cnt);
			N = Integer.parseInt(br.readLine());
			if(N == 0)
				break;
		}
	}

}

자바로 해시를 처음 써봐서 걍 . 눌렀는데 나오길래 keySet로 일단 해봤는데 되길래 이게 되네 상태돼서

자바 해시 구글링 해봤는데 정리 완죤 잘해주신 분 글 찾았슴니당

Java의 맵에서 키 제거 (techiedelight.com)

 

Java의 맵에서 키 제거

이 게시물은 Java의 Map에서 키를 제거하는 방법에 대해 설명합니다. 1. 사용 remove() 방법 표준 솔루션은 Java의 맵에서 키에 대한 매핑을 제거하는 것입니다. remove() 방법 Map 상호 작용. 때 remove() 메

www.techiedelight.com

 

챗씨에게 물어보고 왔습니당

keySet()는 맵에 모든 키를 포함하는 set로 반환해준다네요

keySet().removeAll()은 맵의 키들 중에서 특정한 조건을 만족하는 키들을 모두 삭제하는 역할이래요

remove랑 차이는

keySet().removeAll()은 맵의 키들 중에서 특정한 조건을 만족하는 키들을 모두 삭제하는데 사용되고, remove()는 주어진 키에 해당하는 항목을 맵에서 삭제하는데 사용됩니다.

래요

public static void main(String[] args) throws IOException{
		// TODO Auto-generated method stub
		Map<String, String> map = new HashMap<>();
		 
        map.put("C++", "a");
        map.put("Java", "C++");
        map.put("c", "C++");
        map.put("Ruby", "b");

 
        map.keySet().removeAll(Arrays.asList("C++", "Java"));
        System.out.println(map); //{c=C++, Ruby=b}

	}