[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개의 댓글

관련 채용 정보