https://school.programmers.co.kr/learn/courses/30/lessons/118666
프로그램 제작자
코드 중심 개발자를 고용하십시오. 배치 기반 위치 매칭. 프로그래머의 개발자별 프로필에 가입하고 기술 호환성이 좋은 회사와 연결하십시오.
Programmer.co.kr
“Lv 1. 성격유형검사”
문제
요약..너무 길어서 생략..
접근하다
설문 항목을 공유하고 4보다 큰 선택 항목이 나오면 다음 항목을 평가 +
선택 항목이 4개 미만인 경우 이전 항목에 + 점수
암호
public static String Study(String() survey, int() choices) {
String answer = "";
HashMap<Integer, Integer> map = new HashMap<Integer, Integer>();
HashMap<String, Integer> mbti = new HashMap<>();
String() list = {"R", "T", "C" ,"F", "J", "M", "A", "N"};
for(int i=0; i<list.length; i++) {
mbti.put(list(i), 0);
}
for(int i=0; i<survey.length; i++) {
String() temp = survey(i).split("");
if(choices(i)>4) {
mbti.put(temp(1), mbti.get(temp(1))+choices(i)-4);
}
else if(choices(i)<4) {
mbti.put(temp(0), mbti.get(temp(0))+ 4 - choices(i));
}
}
if(mbti.get("R")>=mbti.get("T")) {
answer = "R";
}
else if(mbti.get("R")<mbti.get("T")){
answer = "T";
}
if(mbti.get("C")>=mbti.get("F")) {
answer = answer.concat("C");
}
else {
answer = answer.concat("F");
}
if(mbti.get("J")>=mbti.get("M")){
answer = answer.concat("J");
}
else {
answer = answer.concat("M");
}
if(mbti.get("A")>=mbti.get("N")) {
answer = answer.concat("A");
}
else {
answer = answer.concat("N");
}
System.out.println(answer);
return answer;
}
검토
테스트 후 응답 concat 부분은 for 문을 실행합니다.
if 문을 사용하면 반복할 필요가 없습니다!
이렇게 코드를 작성하고 싶었는데 코드가 더러워 보입니다.
for 문을 뒤집는 방법에 대해 생각해 보면 좋을 것입니다.
중요한 포인트는 분할하여 4보다 큰 선택은 다음 요소로, 4보다 작은 선택은 앞 요소로 가리키는 부분인 것 같습니다.
어떤 코드가 잘 작성되었는지 아직 모르겠습니다.
파고들수록 모르는 코딩의 세계…