알고리즘

[프로그래머스] 성격 유형 검사하기 - JAVA

2022. 9. 7. 19:55
목차
  1. 풀이
  2. 코드

카카오 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
  1. 풀이
  2. 코드
'알고리즘' 카테고리의 다른 글
  • [BOJ] Dance Dance Revolution - 2342
  • [프로그래머스] 두 큐 합 같게 만들기 - JAVA
  • [LeetCode] 162. Find Peak Element
  • [LeetCode] 153. Find Minimum in Rotated Sorted Array
acisliver
acisliver
acisliver
와당탕탕 개발놀이터
acisliver
전체
오늘
어제
  • 분류 전체보기 (65)
    • 회고 (11)
    • Spring (3)
    • 알고리즘 (21)
    • Java (2)
    • DevOps (2)
    • Shell (2)
    • Nginx (1)
    • Database (22)
    • Project (1)

블로그 메뉴

  • 태그
  • 방명록
  • GitHub
  • Notion

공지사항

인기 글

태그

  • 풀 테이블 스캔
  • 인덱스
  • dp
  • binarySearch
  • 백준
  • 이진탐색
  • Leetcode
  • Shell
  • 알고리즘
  • 프로그래머스
  • 프리코스
  • 자바
  • FOSSLight
  • DevOps
  • Bash
  • 풀 인덱스 스캔
  • 코딩테스트
  • 오픈소스 컨트리뷰톤
  • 우아한테크코스
  • 이분탐색
  • 풀스택
  • 오픈소스
  • 구름톤 트레이닝
  • innodb
  • mysql
  • Java
  • FuntionalInterface
  • Spring
  • spring boot
  • 카카오

최근 댓글

최근 글

hELLO · Designed By 정상우.
acisliver
[프로그래머스] 성격 유형 검사하기 - JAVA
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.