카카오 2022 테크 인턴쉽 코딩테스트 1번 문제로 공식 해설을 기반으로 문제를 풀었습니다.
2022 테크 여름인턴십 코딩테스트 해설
2022년 카카오 여름 인턴십 코딩 테스트가 지난 5월 7일에 5시간에 걸쳐 진행되었습니다. 시간이 부족하여 문제를 풀지 못하는 아쉬움이 없도록 1시간을 늘려 테스트를 진행한 것이 작년과 조금
tech.kakao.com
문제는 프로그래머스에서 확인할 수 있습니다.
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
풀이
간단한 구현 문제입니다. 4개의 지표가 존재하고 각 지표는 두 가지 유형 중 하나입니다. 이 유형들의 점수를 해시나 배열을 사용하여 저장을 합니다. 그리고 설문의 점수대로 저장된 점수를 통해 결과를 출력하면 됩니다.
정리하면
1. 유형별 점수를 저장할 해시나 배열 생성
2. 설문의 점수대로 해당 유형에 점수 저장
3. 지표별 유형의 점수에 따라 최종 성격 유형 도출 (유형 점수가 같다면 사전순으로 빠른 성격 유형 선택)
코드
HashMap을 사용하여 풀이하였습니다.
import java.util.HashMap;
import java.util.Map;
// https://school.programmers.co.kr/learn/courses/30/lessons/118666
// 성격 유형 검사
public class Solution {
public String solution(String[] survey, int[] choices) {
StringBuilder answer = new StringBuilder();
// 1. 유형별 점수를 저장할 HashMap 생성
Map<Character, Integer> map = new HashMap<>();
// 지표별 유형(지표 내에서 미리 알파벳 순서로 정렬)
Character[] type = new Character[] {'R', 'T', 'C', 'F', 'J', 'M', 'A', 'N'};
// HashMap 초기화
for (Character character : type) {
map.put(character, 0);
}
// 2. 설문의 점수별로 유형별 점수 HashMap에 저장
for (int i = 0; i < survey.length; i++) {
char c1 = survey[i].charAt(0);
char c2 = survey[i].charAt(1);
int choice = choices[i];
if (choice > 4) {
map.put(c2, map.getOrDefault(c2, 0) + choice - 4);
} else if (choice < 4) {
map.put(c1, map.getOrDefault(c1, 0) + 4 - choice);
}
}
// 3. 성격 유형 도출
for (int i = 0; i < type.length; i+=2) {
char c1 = type[i];
char c2 = type[i + 1];
answer.append(map.get(c1) >= map.get(c2) ? c1 : c2);
}
return answer.toString();
}
}
'알고리즘' 카테고리의 다른 글
[BOJ] Dance Dance Revolution - 2342 (2) | 2022.12.07 |
---|---|
[프로그래머스] 두 큐 합 같게 만들기 - JAVA (0) | 2022.09.10 |
[LeetCode] 162. Find Peak Element (0) | 2022.07.28 |
[LeetCode] 153. Find Minimum in Rotated Sorted Array (0) | 2022.07.26 |
[LeetCode] 33. Search in Rotated Sorted Array (0) | 2022.07.25 |