관리 메뉴

Tree's 개발일기

[자바] 성격유형 검사하기 본문

문제풀이/프로그래머스

[자바] 성격유형 검사하기

tree0123 2023. 7. 22. 22:22
728x90

https://school.programmers.co.kr/learn/courses/30/lessons/118666

 

프로그래머스

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

programmers.co.kr

비교적 쉬운 문제였지만, 아래 다른 분이 stream으로 푼 풀이를 보고 이렇게 풀어도 되겠구나 하고 기록하기 위해 포스팅한다.

 

<내 풀이> 

배열에 각 문자를 저장하고, 각 문자별 점수는 map에 저장.

그리고, map의 값을 빼서 배열(c)의 문자로 담는다. 

import java.util.*;

class Solution {
    public String solution(String[] survey, int[] choices) {
        String answer ="";
        char[][] c = {{'R','T'},{'C','F'},{'J','M'},{'A','N'}};
        Map<Character, Integer> mapp = new HashMap<>(); 
        
        for (int i=0; i<survey.length; i++) {
            if (choices[i]<4) {
                char left = survey[i].charAt(0);
                mapp.put(left,mapp.getOrDefault(left, 0)+4-choices[i]);
            }
            else if (choices[i]>4) {
                char right = survey[i].charAt(1);
                mapp.put(right,mapp.getOrDefault(right,0)+choices[i]-4);
            }
        }
        for (int i=0; i<4; i++) {
            answer+= (mapp.getOrDefault(c[i][0],0)>=mapp.getOrDefault(c[i][1],0) ? c[i][0] : c[i][1]);
        }
        
        return answer;
    }
}

 

<다른 풀이>

getOrdefault()메소드와 stream을 사용해서도 풀 수 있구나라는 걸 저장하고 싶어서 기록.

stream은 알고리즘할 때 풀어보진 않았는데, stream에 조건문을 써서 이렇게 간단하게 풀 수 있었다.

import java.util.*;

class Solution {
    public String solution(String[] survey, int[] choices) {
        Map<Character, Integer> mapp = new HashMap<>(); 
        
        for (int i=0; i<survey.length; i++) {
            if (choices[i]<4) {
                char left = survey[i].charAt(0);
                mapp.put(left,mapp.getOrDefault(left, 0)+4-choices[i]);
            }
            else if (choices[i]>4) {
                char right = survey[i].charAt(1);
                mapp.put(right,mapp.getOrDefault(right,0)+choices[i]-4);
            }
        }
        return new StringBuilder()
            .append(mapp.getOrDefault('R',0) >= mapp.getOrDefault('T',0) ? 'R':'T')
            .append(mapp.getOrDefault('C',0) >= mapp.getOrDefault('F',0) ? 'C':'F')
            .append(mapp.getOrDefault('J',0) >= mapp.getOrDefault('M',0) ? 'J':'M')
            .append(mapp.getOrDefault('A',0) >= mapp.getOrDefault('N',0) ? 'A':'N')
            .toString();
    }
}
728x90

'문제풀이 > 프로그래머스' 카테고리의 다른 글

[자바] 거리두기 확인하기  (0) 2023.07.27
[자바] 숫자변환하기  (0) 2023.07.24
[자바] 달리기경주  (0) 2023.07.22
미로 탈출  (0) 2023.07.20
[자바]신고 결과 받기  (0) 2023.07.17
Comments