본문 바로가기
알고리즘/코딩테스트

[프머] 완주하지 못한 선수 42576_ 자바풀이

by dokii 2022. 1. 6.
728x90
반응형
package pm;

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;

public class pm42576 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String answer ="";
		String[] participant = {"k", "i", "e"};
		String[] completion = {"k","i"};
		
		//hash사용하기
		HashMap<String,Integer> map = new HashMap<String,Integer>();
		
		//이름의 갯수를 hashmap으로 묶어 체크한다.
		for(String player:participant) {
			map.put(player, map.getOrDefault(player, 0)+1);
			System.out.println("player: "+ player);
			System.out.println("participant: "+ map.get(player));
			
		}
		//위에서 이름의 갯수를 체크했다면 이제 다시 완주한 플레이어의 이름과 비교, 0보다큰 남은이름이 완주하지 못한자 이다.
		for(String player:completion) {
			map.put(player, map.get(player)-1);
			System.out.println("player: "+ player);
			System.out.println("completion: "+ map.get(player));
		}
		//HashMap.keySet() : HashMap이 들고 있는 전체 Key의 배열을 반환하는 함수
		//HashMap.get(Key) : Key에 해당하는 Value를 반환하는 함수이다.
		
		
		//방법1
		/*Iterator<Map.Entry<String,Integer>> iter = map.entrySet().iterator();
		
		
		while(iter.hasNext()) {
			Map.Entry<String, Integer> entry = iter.next();
			System.out.println("entry: " +entry );
			if(entry.getValue() !=0) {
				answer = entry.getKey();
				break;
			}
		}*/
		
		//방법2
		for(Map.Entry<String, Integer> entry : map.entrySet()) {
			System.out.println("entry: "+ entry);
			if(entry.getValue() !=0) {
				answer = entry.getKey();
				break;
			}
		}
		
		
		System.out.println("answer: " +answer);
		
		

	}

}

여기서 map을 출력하는 방법이 두가지있는데,

첫번째는 Iterator을 이용한 방법

두번째는 for문을이용해 돌리는 방법이다.

 

Iterator을 사용하는경우 while을 이용하여 값이 있다면 계속 돌도록해준다.

-> 이때 hasNext() : 값이 있다면 true, 없다면 false를 반환함

-> next()는 다음 요소를 반환함. 즉 가지고있는 내용들을 반환

 

for문을 이용하는경우 향상된 for문을 이용하여 쭉 돌려줄수도 있다.

-> 바로 내용 반환

 

 

또, Map.entrySet를 사용해 키와 값을 모두 얻을수 있다.

->entry.getKey() : 키 반환

->entry.getValue() : 값 반환

 

 

 

 


https://stove99.tistory.com/96

 

Java Map 반복(Iteration)시키는 3가지 방법

왠지 도움이 될것 같다면 추천을 *(-_-)* 이 세가지 방법 말고도 뭐 다른 방법이 있겠지만 대충 요 3가지 정도만 알고 있어도 충분하고도 넘칠것 같다. 이전까지는 제일 첫번째 방법으로만 Map 에

stove99.tistory.com

https://recordsoflife.tistory.com/314

 

Map.Entry Java 클래스 사용

If you have a few years of experience in the Java ecosystem, and you're interested in sharing that experience with the community (and getting paid for your work of course), have a look at the "Write..

recordsoflife.tistory.com

 

728x90
반응형

댓글