관리 메뉴

Mini

프로그래머스 성격 유형 검사하기 자바 JAVA//HashMap m.getOrDefault(key,기본값) , 맵출력방법 m.forEach 본문

Algorithm/programmers

프로그래머스 성격 유형 검사하기 자바 JAVA//HashMap m.getOrDefault(key,기본값) , 맵출력방법 m.forEach

Mini_96 2023. 8. 7. 14:43

https://school.programmers.co.kr/learn/courses/30/lessons/118666

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

* HashMap m.getOrDefault(key,기본값) 

key에 해당하는 값이있다면 값반환,

없으면 기본값반환.

 

*맵출력방법 m.forEach

//맵 출력방법
m.forEach((key, value) -> {
    System.out.println(key + " : " + value);
});

 

* 의사코드

1. 반복문돌면서 경우의수에 따라 map[Key]에 점수카운팅

2. 카운팅에 따라 점수가 큰것을 정답에추가.

 

* 전체코드

import java.util.*;


class Solution {
    static HashMap<Character, Integer> m=new HashMap<>();
    static String answer;
    
    public String solution(String[] survey, int[] choices) {
        String answer = "";
        
        //그냥 돌면서 맵에 답아 m['R']=점수
        int i=0;
        for(String s: survey){
            System.out.println(s);
            
            if(choices[i]==1){
                char ch=s.charAt(0);
           		m.put(ch,m.getOrDefault(ch,0)+3);
            }
            else if(choices[i]==2){
                char ch=s.charAt(0);
           		m.put(ch,m.getOrDefault(ch,0)+2);
            }
            else if(choices[i]==3){
                char ch=s.charAt(0);
           		m.put(ch,m.getOrDefault(ch,0)+1);
            }
            else if(choices[i]==4){
                //pass
            }
            else if(choices[i]==5){
                char ch=s.charAt(1);
           		m.put(ch,m.getOrDefault(ch,0)+1);
            }
            else if(choices[i]==6){
                char ch=s.charAt(1);
           		m.put(ch,m.getOrDefault(ch,0)+2);
            }
            else if(choices[i]==7){
                char ch=s.charAt(1);
           		m.put(ch,m.getOrDefault(ch,0)+3);
            }
            ++i;
        }
        
        //맵 출력방법
        m.forEach((key, value) -> {
            System.out.println(key + " : " + value);
        });
        
    	String s1="RTCFJMAN";
    	for(int j=0; j<s1.length();j=j+2){
    		//System.out.println(s1.charAt(j));
            char c1=s1.charAt(j);
            char c2=s1.charAt(j+1);
            
            if(m.getOrDefault(c1,0)>=m.getOrDefault(c2,0)){
                answer+=c1;
            }
            else answer+=c2;
    	}

        return answer;
    }
}