본문 바로가기
[ 다먹살 ]/- Coding

[프로그래머스] 레벨1 성격 유형 검사하기

by 엉망으로살기 2022. 10. 17.
반응형

https://school.programmers.co.kr/learn/courses/30/lessons/118666?language=java 

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

이 문제는 레벨1이기 때문에 문자열처리와 구현을 통해서 비교적 간단하게 해결할 수 있는 문제이다.

나는 다음과 같은 순서를 통해 해결했다.

 

1. survey 및 choices 배열 입력값에 대한 전처리

 1-1. 이 때 미리 문자열을 인덱스로 하는 score 배열을 만들어서 여기에 choices의 값을 저장시킨다.

2. 최종 합계가 끝난 각각의 score 배열값을 가져와서 같은 성격 유형끼리 비교

 2-1. 4개의 카테고리 문자 모두 첫 번쨰 원소가 사전 순서상 앞인 것을 활용해서 결과값 result에 저장(자동 예외처리)

 


문제


제한사항 및 입출력 예제(1)


제한사항 및 입출력 예제(2)


코드

class Solution
{
    public String solution(String[] survey, int[] choices)
    {
        char[][] category = new char[][]{{'R','T'},{'C','F'},{'J','M'},{'A','N'}};
        int[] score = new int['Z'-'A'+1];
        String result = "";
        
        for(int i=0; i<survey.length; i++)
        {
            if(choices[i]!=4)
            {
                String input = survey[i];
                
                if(choices[i]<4)
                {
                    score[input.charAt(0)-'A'] += Math.abs(4-choices[i]);
                }
                else
                {
                    score[input.charAt(1)-'A'] += Math.abs(4-choices[i]);
                }
            }
        }
        for(int i=0; i<category.length; i++)
        {
            int fir = score[(int)(category[i][0])-(int)'A'];
            int sec = score[(int)(category[i][1])-(int)'A'];
            
            if(fir<sec)
            {
                result += category[i][1];
            }
            else
            {
                result += category[i][0];
            }
        }
        
        return result;
    }
}

 

반응형

댓글