[Algorithm] 성격 유형 검사하기

2025. 1. 15. 09:37·Algorithm/Practice

문제 설명

나만의 카카오 성격 유형 검사 만들기

성격 유형 검사는 4개의 지표를 기준으로 성격 유형을 분류합니다. 각 지표는 두 가지 성격 유형 중 하나로 결정됩니다.

 

1. 성격 유형 지표

4개의 지표가 존재하므로 가능한 성격 유형은 총 16가지입니다.

예를 들어, "RFMN" 또는 "TCMA"와 같은 성격 유형이 가능합니다.

 

2. 검사지 구성

  • 검사지에는 총 n개의 질문이 포함됩니다.
  • 각 질문에는 다음과 같은 7개의 선택지가 있습니다:
    1. 매우 비동의
    2. 비동의
    3. 약간 비동의
    4. 모르겠음
    5. 약간 동의
    6. 동의
    7. 매우 동의

3. 점수 계산 방식

각 질문은 하나의 지표를 기준으로 성격 유형 점수를 판단합니다. 예를 들어, 아래와 같은 표를 기준으로 점수를 계산합니다.

 

4. 주의할 점

  • 네오형이 비동의, 어피치형이 동의로만 고정되지 않습니다.
    (질문에 따라 반대 상황도 가능합니다.)
  • 선택지의 점수는 고정:
    • 매우 동의/비동의 → 3점
    • 동의/비동의 → 2점
    • 약간 동의/비동의 → 1점
    • 모르겠음 → 0점

 

5. 검사 결과 산출

  • 모든 질문의 점수를 합산하여 각 지표별 점수를 계산합니다.
  • 각 지표에서 높은 점수를 받은 성격 유형이 검사자의 성격 유형이 됩니다.
  • 동점일 경우:
    • 사전순으로 빠른 성격 유형이 선택됩니다.

6. 구현

검사를 위한 데이터는 다음과 같은 매개변수로 주어집니다:

  • survey: 각 질문에서 판단하는 지표를 담은 문자열 배열.
  • choices: 검사자가 각 질문에 대해 선택한 선택지를 담은 정수 배열.

결과적으로, 검사자의 성격 유형을 지표 번호 순서대로 반환하는 solution 함수를 작성해야 합니다.

 

의사코드

  1. 유형 타입별로 점수를 변수에 저장한다.
    1. [방법] Char[26] 에 담는다. (A~Z 유형)
    2. [방법] Map에 담는다.
  2. [반복문] survey 사이즈만큼 순회한다.
    1. choices의 응답 결과에 따라 점수를 계산한다.
    2. 점수가 4보다 클 경우, B타입에 점수를 준다.
    3. 점수가 4보다 작을 경우, A타입에 점수를 준다.
  3. [반복문] 정해진 성격 유형 쌍을 순회한다.
    1. 맵에서 해당 유형(A,B)의 점수를 가져온다.
    2. A가 크거나 작으면 결과값에 A유형을 추가한다.
    3. 그렇지 않으면 B유형을 추가한다.
  4. 결과값을 반환한다.

 

코드 작성

#include <string>
#include <vector>
#include <map>

using namespace std;

string solution(vector<string> survey, vector<int> choices) {
    map<char, int> map;
    
    string answer = "";
    for (int idx = 0; idx < choices.size(); ++idx)
    {
        char typeAIdx = survey[idx][0];
        char typeBIdx = survey[idx][1];
        int choice = choices[idx];
        
        if (choice < 4) 
        {
            map[typeAIdx] += 4 - choice;
        }
        if (choice > 4)
        {
            map[typeBIdx] += choice - 4;
        }
    }
    
    char personalityTypes[4][2] =
    {
        {'R','T'},
        {'C','F'},
        {'J','M'},
        {'A','N'},
    };
    
    for (int i = 0; i < 4; i++)
    {
        int scoreA = map[personalityTypes[i][0]];
        int scoreB = map[personalityTypes[i][1]];
        
        if (scoreA >= scoreB)
        {
            answer += personalityTypes[i][0];
        }
        else
        {
            answer += personalityTypes[i][1];
        }
    }
    
    return answer;
}

 

'Algorithm > Practice' 카테고리의 다른 글

[Algorithm] 달리기 경주  (0) 2025.01.16
[Algorithm] 바탕화면 정리  (1) 2025.01.15
[Algorithm] 햄버거 만들기  (2) 2025.01.14
[Algorithm] 둘만의 암호  (2) 2025.01.13
[Algorithm] 대충 만든 자판  (0) 2025.01.13
'Algorithm/Practice' 카테고리의 다른 글
  • [Algorithm] 달리기 경주
  • [Algorithm] 바탕화면 정리
  • [Algorithm] 햄버거 만들기
  • [Algorithm] 둘만의 암호
DevColIn
DevColIn
복잡함을 단순하게
  • DevColIn
    심플한 코딩생활
    복잡함을 단순하게
  • 전체
    오늘
    어제
    • 전체보기 (223)
      • Unreal 부트캠프 (49)
        • TIL (34)
        • 사전캠프 (7)
        • 본캠프 (8)
      • Unrael (10)
        • 환경설정 (0)
        • Basic (19)
        • Component (5)
        • GAS (GameplayAbilitySystem) (3)
        • AI (2)
        • Implement (10)
        • UI (1)
        • Error (1)
        • Network (2)
        • Tip (1)
      • Level Design (5)
      • Math (1)
      • Design Pattern (16)
      • Computer Science (2)
        • Network (1)
        • Database (1)
      • Algorithm (79)
        • Basic (4)
        • Practice (74)
      • C++ (4)
        • Basic (4)
      • Tool (0)
      • Game (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 미디어로그
    • 위치로그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    component
    Design Pattern
    내일배움캠프
    unreal
    알고리즘
    레벨디자인
    unrealengine
    actor
    사전캠프
    Til
    디자인패턴
    퀘스트
    assetmanager
    Animation
    tsoftobjectptr
    액터
    gas
    Algorithm
    AI
    게임동기화
    Implement
    소프트 레퍼런신
    GameplayEffect
    본캠프
    디자인 패턴
    하드 레퍼런싱
    DesignPattern
    basic
    c++
    KPT회고
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.2
DevColIn
[Algorithm] 성격 유형 검사하기
상단으로

티스토리툴바