[2022 KAKAO TECH INTERNSHIP] 성격 유형 검사하기

최민길(Gale)·2023년 3월 4일
1

알고리즘

목록 보기
48/172

문제 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/118666

[이 문제는 프로그래머스에서 푼 문제입니다.]
이 문제는 문제 조건을 구현하면 쉽게 풀 수 있습니다. 주어진 조건의 제약조건이 굉장히 작기 때문에 완전탐색으로 풀어도 시간 초과가 발생하지 않습니다. 전체적인 로직은 각 항목 데이터가 담긴 배열을 설정한 후 항목을 체크해서 앞의 문자열이 비동의, 뒤의 문자열이 동의로 체크해서 해당 값을 최신화해주시면 됩니다.

다음은 코드입니다.

class Solution {
    static void setVal(int[] arr, char c, int val){
        if(c == 'R') arr[0] -= val;
        else if(c == 'T') arr[0] += val;

        else if(c == 'C') arr[1] -= val;
        else if(c == 'F') arr[1] += val;

        else if(c == 'J') arr[2] -= val;
        else if(c == 'M') arr[2] += val;

        else if(c == 'A') arr[3] -= val;
        else if(c == 'N') arr[3] += val;
    }
    
    public String solution(String[] survey, int[] choices) {
        String answer = "";
        
        // 설문조사 항목 배열 추가
        // R/T : 0
        // C/F : 1
        // J/M : 2
        // A/N : 3
        int[] arr = new int[4];
        
        // 설문조사 시작
        for(int i=0;i<survey.length;i++){
            
            // 항목 체크
            char negative = survey[i].charAt(0);
            char positive = survey[i].charAt(1);
            
            // 점수 설정
            int val = choices[i] - 4;
            
            // 만약 값이 음수라면 negative값에 따라 추가
            if(val<0) setVal(arr,negative,Math.abs(val));
            
            // 만약 값이 양수라면 positive값에 따라 추가
            else if(val>0) setVal(arr,positive,Math.abs(val));
            
        }
        
        // arr을 통해 answer 생성
        if(arr[0]<=0) answer += 'R';
        else if(arr[0]>0) answer += 'T';
        
        if(arr[1]<=0) answer += 'C';
        else if(arr[1]>0) answer += 'F';
        
        if(arr[2]<=0) answer += 'J';
        else if(arr[2]>0) answer += 'M';
        
        if(arr[3]<=0) answer += 'A';
        else if(arr[3]>0) answer += 'N';

        return answer;
    }
}

profile
저는 상황에 맞는 최적의 솔루션을 깊고 정확한 개념의 이해를 통한 다양한 방식으로 해결해오면서 지난 3년 동안 신규 서비스를 20만 회원 서비스로 성장시킨 Software Developer 최민길입니다.

0개의 댓글