https://school.programmers.co.kr/learn/courses/30/lessons/118666
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
분석
2차원 배열 혹은 HashMap을 사용해야겠다는 생각이 들었다. 각 지표에 따른 점수를 Map으로 나타내기로 하였다. 같은 지표의 점수가 추가될 때 기존의 점수를 가져오려 했으나, 아직 아무것도 저장되지 않은 Map 에서는 NullPointerException 이 발생하므로 Map을 초기화하였다. 다른 부분은 문제에서 요구하는 흐름대로 단순하게 구현하였다.
코드
import java.util.*;
class Solution {
public String solution(String[] survey, int[] choices) {
String answer = "";
HashMap<String, Integer> map = new HashMap<>(){
{
put("R",0);
put("T",0);
put("C",0);
put("F",0);
put("J",0);
put("M",0);
put("A",0);
put("N",0);
}
};
for(int i=0; i<survey.length; i++){
switch(choices[i]){
case 1:
map.put(survey[i].charAt(0)+"", map.get(survey[i].charAt(0)+"")+3);
break;
case 2:
map.put(survey[i].charAt(0)+"", map.get(survey[i].charAt(0)+"")+2);
break;
case 3:
map.put(survey[i].charAt(0)+"", map.get(survey[i].charAt(0)+"")+1);
break;
case 4:
break;
case 5:
map.put(survey[i].charAt(1)+"", map.get(survey[i].charAt(1)+"")+1);
break;
case 6:
map.put(survey[i].charAt(1)+"", map.get(survey[i].charAt(1)+"")+2);
break;
case 7:
map.put(survey[i].charAt(1)+"", map.get(survey[i].charAt(1)+"")+3);
break;
}
}
if(map.get("R")>map.get("T"))
answer +="R";
else if(map.get("R")==map.get("T"))
answer +="R";
else
answer +="T";
if(map.get("C")>map.get("F"))
answer +="C";
else if(map.get("C")==map.get("F"))
answer +="C";
else
answer +="F";
if(map.get("J")>map.get("M"))
answer +="J";
else if(map.get("J")==map.get("M"))
answer +="J";
else
answer +="M";
if(map.get("A")>map.get("N"))
answer +="A";
else if(map.get("A")==map.get("N"))
answer +="A";
else
answer +="N";
return answer;
}
}
1단계 문제를 클릭했는데 카카오 테크 인턴쉽 문제였다. 살짝 긴장+재미있게 풀어봤고 약 35분정도 걸린 것 같다.ㅠ 찾아보니 역시나 가장 쉬운 1번 문제였다.
'알고리즘' 카테고리의 다른 글
[프로그래머스] lv2 다리를 지나는 트럭 / JAVA (0) | 2023.05.14 |
---|---|
DFS, BFS 문제 (이코테) (0) | 2023.04.16 |
[프로그래머스] 삼각형의 완성조건 (2) / java (0) | 2022.11.01 |