일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
- Algorithm
- 노마드코더 강의
- HashMap
- Array
- 인플레이션에서 살아남기
- Stack
- Java
- programmers
- SoftwareExpertAcademy
- 백준
- 재귀
- dfs
- 카카오블라인드코딩테스트
- 달빛캠퍼스
- 리액트
- ReactJS로 영화 웹 서비스 만들기
- 알고리즘
- 경제공부
- BOJ
- 달빛클럽1기
- SWEA
- 달빛클럽
- 자바
- 프로그래머스
- 달빛클럽 1기
- 노마드코더
- JPA
- React
- React.js
- 완전탐색
- Today
- Total
th42500의 TIL
[Java] 2022 KAKAO TECH INTERNSHIP - 성격 유형 검사하기 본문
https://school.programmers.co.kr/learn/courses/30/lessons/118666
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
✔ 입출력 예시
💡 포인트
1️⃣ 각 지표 별로 유형 2가지 중 한가지만 선택
2️⃣ 선택지에 따라 점수가 다름
'매우 ~' 선택지가 가장 점수가 높고 '약간 ~' 선택지가 가장 점수가 낮으며, '모르겠음'은 어떤 유형도 점수 ❌
3️⃣ 만약 각 지표 별 2가지 유형 모두 점수가 동일하다면 사전순으로 빠른 유형이 선택
❓ 풀이과정
1️⃣ 각 유형별 점수를 담을 길이가 8인 배열 생성
2️⃣ survey배열을 순회하며 동의(점수가 3점 이하)일 경우 앞의 성격 유형을, 비동의(점수가 5점 이상)일 경우 뒤의
성격 유형을 선택
3️⃣ 1️⃣에서 선언한 배열의 선택된 성격 유형에 맞는 위치에 점수를 더해줌
4️⃣ 각 지표별 유형들의 점수를 비교하여 더 높은 점수의 유형을, 점수가 동일하다면 사전순으로 빠른 성격 유형을 선택
❗ 결과
👉 테스트 통과
✔ 소스코드
public class Solution {
public static void main(String[] args) {
// String[] survey = { "AN", "CF", "MJ", "RT", "NA" };
// int[] choices = { 5, 3, 2, 7, 5 };
String[] survey = {"TR", "RT", "TR"};
int[] choices = {7, 1, 3};
System.out.println(solution(survey, choices));
}
private static String solution(String[] survey, int[] choices) {
int[] scores = new int[8]; // 각 성격 유형별 점수를 담을 배열
for (int i = 0; i < survey.length; i++) {
if(choices[i] <= 3) { // 동의일 경우
String type = survey[i].substring(0, 1); // 앞의 성격 유형 선택
switch (type) {
case "R":
scores[0] += 4-choices[i];
break;
case "T":
scores[1] += 4-choices[i];
break;
case "C":
scores[2] += 4-choices[i];
break;
case "F":
scores[3] += 4-choices[i];
break;
case "J":
scores[4] += 4-choices[i];
break;
case "M":
scores[5] += 4-choices[i];
break;
case "A":
scores[6] += 4-choices[i];
break;
case "N":
scores[7] += 4-choices[i];
break;
}
} else if (choices[i] >= 5) { // 비동의일 경우
String type = survey[i].substring(1, 2); // 뒤의 성격 유형 선택
switch (type) {
case "R":
scores[0] += choices[i]-4;
break;
case "T":
scores[1] += choices[i]-4;
break;
case "C":
scores[2] += choices[i]-4;
break;
case "F":
scores[3] += choices[i]-4;
break;
case "J":
scores[4] += choices[i]-4;
break;
case "M":
scores[5] += choices[i]-4;
break;
case "A":
scores[6] += choices[i]-4;
break;
case "N":
scores[7] += choices[i]-4;
break;
}
}
}
StringBuilder sb = new StringBuilder();
// 각 지표별 유형 점수를 비교하여 더 높은 점수의 유형 선택
sb.append((scores[0] < scores[1]) ? "T" : "R");
sb.append((scores[2] < scores[3]) ? "F" : "C");
sb.append((scores[4] < scores[5]) ? "M" : "J");
sb.append((scores[6] < scores[7]) ? "N" : "A");
return sb.toString();
}
}
처음에는 문제를 보고 당황했지만 매우 쉬웠던 문제❗ 오랜만에 switch문과 삼항연산자를 사용해서 풀어본 문제😋
'Algorithm > Programmers' 카테고리의 다른 글
[Java] 완전탐색 - 카펫 (Lv2) (0) | 2022.09.19 |
---|---|
[Java] 2022 KAKAO TECH INTERNSHIP - 두 큐 합 같게 만들기 (0) | 2022.08.30 |
[Java] 완전탐색 - 최소 직사각형 (Lv1) (0) | 2022.08.07 |
[Java] 2018 KAKAO BLIND RECRUITMENT - [1차] 뉴스 클러스터링 (Lv2) (0) | 2022.08.05 |
[Java] 완전탐색 - 모의고사(Lv1) (0) | 2022.08.04 |