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;
}
}
'[ 다먹살 ] > - Coding' 카테고리의 다른 글
[프로그래머스] 레벨1 숫자 짝꿍 (0) | 2022.10.18 |
---|---|
[프로그래머스] 레벨1 삼총사 (0) | 2022.10.18 |
[백준] 1919 에너그램 만들기 (0) | 2022.10.12 |
[백준] 1789 수들의 합 (0) | 2022.10.05 |
[백준] 2460 지능형기차2 (0) | 2022.10.04 |
댓글