🌠 문제

λ‚˜λ§Œμ˜ 카카였 성격 μœ ν˜• 검사지λ₯Ό λ§Œλ“€λ €κ³  ν•©λ‹ˆλ‹€.

성격 μœ ν˜• κ²€μ‚¬λŠ” λ‹€μŒκ³Ό 같은 4개 μ§€ν‘œλ‘œ 성격 μœ ν˜•μ„ κ΅¬λΆ„ν•©λ‹ˆλ‹€. 성격은 각 μ§€ν‘œμ—μ„œ 두 μœ ν˜• 쀑 ν•˜λ‚˜λ‘œ κ²°μ •λ©λ‹ˆλ‹€.

 

μ§€ν‘œ 번호          성격 μœ ν˜•

1번 μ§€ν‘œ           λΌμ΄μ–Έν˜•(R), νŠœλΈŒν˜•(T)

2번 μ§€ν‘œ           μ½˜ν˜•(C), ν”„λ‘œλ„ν˜•(F)

3번 μ§€ν‘œ           μ œμ΄μ§€ν˜•(J), λ¬΄μ§€ν˜•(M)

4번 μ§€ν‘œ           μ–΄ν”ΌμΉ˜ν˜•(A), λ„€μ˜€ν˜•(N)

4개의 μ§€ν‘œκ°€ μžˆμœΌλ―€λ‘œ 성격 μœ ν˜•μ€ 총 16(=2 x 2 x 2 x 2)κ°€μ§€κ°€ λ‚˜μ˜¬ 수 μžˆμŠ΅λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄, "RFMN"μ΄λ‚˜ "TCMA"와 같은 성격 μœ ν˜•μ΄ μžˆμŠ΅λ‹ˆλ‹€.

 

κ²€μ‚¬μ§€μ—λŠ” 총 n개의 질문이 있고, 각 μ§ˆλ¬Έμ—λŠ” μ•„λž˜μ™€ 같은 7개의 선택지가 μžˆμŠ΅λ‹ˆλ‹€.

 

맀우 λΉ„λ™μ˜

λΉ„λ™μ˜

μ•½κ°„ λΉ„λ™μ˜

λͺ¨λ₯΄κ² μŒ

μ•½κ°„ λ™μ˜

λ™μ˜

맀우 λ™μ˜

각 μ§ˆλ¬Έμ€ 1κ°€μ§€ μ§€ν‘œλ‘œ 성격 μœ ν˜• 점수λ₯Ό νŒλ‹¨ν•©λ‹ˆλ‹€.

 

예λ₯Ό λ“€μ–΄, μ–΄λ–€ ν•œ μ§ˆλ¬Έμ—μ„œ 4번 μ§€ν‘œλ‘œ μ•„λž˜ ν‘œμ²˜λŸΌ 점수λ₯Ό λ§€κΈΈ 수 μžˆμŠ΅λ‹ˆλ‹€.

 

선택지   성격 μœ ν˜• 점수

맀우 λΉ„λ™μ˜       λ„€μ˜€ν˜• 3점

λΉ„λ™μ˜   λ„€μ˜€ν˜• 2점

μ•½κ°„ λΉ„λ™μ˜       λ„€μ˜€ν˜• 1점

λͺ¨λ₯΄κ² μŒ           μ–΄λ–€ 성격 μœ ν˜•λ„ 점수λ₯Ό μ–»μ§€ μ•ŠμŠ΅λ‹ˆλ‹€

μ•½κ°„ λ™μ˜          μ–΄ν”ΌμΉ˜ν˜• 1점

λ™μ˜      μ–΄ν”ΌμΉ˜ν˜• 2점

맀우 λ™μ˜          μ–΄ν”ΌμΉ˜ν˜• 3점

μ΄λ•Œ κ²€μ‚¬μžκ°€ μ§ˆλ¬Έμ—μ„œ μ•½κ°„ λ™μ˜ 선택지λ₯Ό 선택할 경우 μ–΄ν”ΌμΉ˜ν˜•(A) 성격 μœ ν˜• 1점을 λ°›κ²Œ λ©λ‹ˆλ‹€. λ§Œμ•½ κ²€μ‚¬μžκ°€ 맀우 λΉ„λ™μ˜ 선택지λ₯Ό 선택할 경우 λ„€μ˜€ν˜•(N) 성격 μœ ν˜• 3점을 λ°›κ²Œ λ©λ‹ˆλ‹€.

 

μœ„ μ˜ˆμ‹œμ²˜λŸΌ λ„€μ˜€ν˜•μ΄ λΉ„λ™μ˜, μ–΄ν”ΌμΉ˜ν˜•μ΄ λ™μ˜μΈ 경우만 μ£Όμ–΄μ§€μ§€ μ•Šκ³ , μ§ˆλ¬Έμ— 따라 λ„€μ˜€ν˜•μ΄ λ™μ˜, μ–΄ν”ΌμΉ˜ν˜•μ΄ λΉ„λ™μ˜μΈ κ²½μš°λ„ μ£Όμ–΄μ§ˆ 수 μžˆμŠ΅λ‹ˆλ‹€.

ν•˜μ§€λ§Œ 각 μ„ νƒμ§€λŠ” 고정적인 크기의 점수λ₯Ό κ°€μ§€κ³  μžˆμŠ΅λ‹ˆλ‹€.

 

맀우 λ™μ˜λ‚˜ 맀우 λΉ„λ™μ˜ 선택지λ₯Ό μ„ νƒν•˜λ©΄ 3점을 μ–»μŠ΅λ‹ˆλ‹€.

λ™μ˜λ‚˜ λΉ„λ™μ˜ 선택지λ₯Ό μ„ νƒν•˜λ©΄ 2점을 μ–»μŠ΅λ‹ˆλ‹€.

μ•½κ°„ λ™μ˜λ‚˜ μ•½κ°„ λΉ„λ™μ˜ 선택지λ₯Ό μ„ νƒν•˜λ©΄ 1점을 μ–»μŠ΅λ‹ˆλ‹€.

λͺ¨λ₯΄κ² μŒ 선택지λ₯Ό μ„ νƒν•˜λ©΄ 점수λ₯Ό μ–»μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

검사 κ²°κ³ΌλŠ” λͺ¨λ“  질문의 성격 μœ ν˜• 점수λ₯Ό λ”ν•˜μ—¬ 각 μ§€ν‘œμ—μ„œ 더 높은 점수λ₯Ό 받은 성격 μœ ν˜•μ΄ κ²€μ‚¬μžμ˜ 성격 μœ ν˜•μ΄λΌκ³  νŒλ‹¨ν•©λ‹ˆλ‹€. 단, ν•˜λ‚˜μ˜ μ§€ν‘œμ—μ„œ 각 성격 μœ ν˜• μ μˆ˜κ°€ κ°™μœΌλ©΄, 두 성격 μœ ν˜• 쀑 사전 순으둜 λΉ λ₯Έ 성격 μœ ν˜•μ„ κ²€μ‚¬μžμ˜ 성격 μœ ν˜•μ΄λΌκ³  νŒλ‹¨ν•©λ‹ˆλ‹€.

 

μ§ˆλ¬Έλ§ˆλ‹€ νŒλ‹¨ν•˜λŠ” μ§€ν‘œλ₯Ό 담은 1차원 λ¬Έμžμ—΄ λ°°μ—΄ survey와 κ²€μ‚¬μžκ°€ 각 μ§ˆλ¬Έλ§ˆλ‹€ μ„ νƒν•œ 선택지λ₯Ό 담은 1차원 μ •μˆ˜ λ°°μ—΄ choicesκ°€ λ§€κ°œλ³€μˆ˜λ‘œ μ£Όμ–΄μ§‘λ‹ˆλ‹€. μ΄λ•Œ, κ²€μ‚¬μžμ˜ 성격 μœ ν˜• 검사 κ²°κ³Όλ₯Ό μ§€ν‘œ 번호 μˆœμ„œλŒ€λ‘œ return ν•˜λ„λ‘ solution ν•¨μˆ˜λ₯Ό μ™„μ„±ν•΄μ£Όμ„Έμš”.

🌠 μ œν•œμ‚¬ν•­

1 ≀ survey의 길이 ( = n) ≀ 1,000

survey의 μ›μ†ŒλŠ” "RT", "TR", "FC", "CF", "MJ", "JM", "AN", "NA" 쀑 ν•˜λ‚˜μž…λ‹ˆλ‹€.

survey[i]의 첫 번째 μΊλ¦­ν„°λŠ” i+1번 질문의 λΉ„λ™μ˜ κ΄€λ ¨ 선택지λ₯Ό μ„ νƒν•˜λ©΄ λ°›λŠ” 성격 μœ ν˜•μ„ μ˜λ―Έν•©λ‹ˆλ‹€.

survey[i]의 두 번째 μΊλ¦­ν„°λŠ” i+1번 질문의 λ™μ˜ κ΄€λ ¨ 선택지λ₯Ό μ„ νƒν•˜λ©΄ λ°›λŠ” 성격 μœ ν˜•μ„ μ˜λ―Έν•©λ‹ˆλ‹€.

choices의 길이 = survey의 길이

 

choices[i]λŠ” κ²€μ‚¬μžκ°€ μ„ νƒν•œ i+1번째 질문의 선택지λ₯Ό μ˜λ―Έν•©λ‹ˆλ‹€.

1 ≀ choices의 μ›μ†Œ ≀ 7

choices  뜻

1          맀우 λΉ„λ™μ˜

2          λΉ„λ™μ˜

3          μ•½κ°„ λΉ„λ™μ˜

4          λͺ¨λ₯΄κ² μŒ

5          μ•½κ°„ λ™μ˜

6          λ™μ˜

7          맀우 λ™μ˜

🌠 μž…μΆœλ ₯ 예

survey   choices  result

["AN", "CF", "MJ", "RT", "NA"]        [5, 3, 2, 7, 5]       "TCMA"

["TR", "RT", "TR"] [7, 1, 3]  "RCJA"

🌠 μž…μΆœλ ₯ 예 μ„€λͺ…

μž…μΆœλ ₯ 예 #2

 

1λ²ˆλΆ€ν„° 3λ²ˆκΉŒμ§€ 질문의 성격 μœ ν˜• 점수λ₯Ό ν•©μΉ˜λ©΄ μ•„λž˜ ν‘œμ™€ κ°™μŠ΅λ‹ˆλ‹€.

 

μ§€ν‘œ 번호          성격 μœ ν˜•          점수     성격 μœ ν˜•          점수

1번 μ§€ν‘œ           λΌμ΄μ–Έν˜•(R)        6          νŠœλΈŒν˜•(T)           1

2번 μ§€ν‘œ           μ½˜ν˜•(C)  0          ν”„λ‘œλ„ν˜•(F)        0

3번 μ§€ν‘œ           μ œμ΄μ§€ν˜•(J)        0          λ¬΄μ§€ν˜•(M)          0

4번 μ§€ν‘œ           μ–΄ν”ΌμΉ˜ν˜•(A)        0          λ„€μ˜€ν˜•(N)          0

1번 μ§€ν‘œλŠ” νŠœλΈŒν˜•(T)보닀 λΌμ΄μ–Έν˜•(R)의 μ μˆ˜κ°€ 더 λ†’μŠ΅λ‹ˆλ‹€. λ”°λΌμ„œ 첫 번째 μ§€ν‘œμ˜ 성격 μœ ν˜•μ€ Rμž…λ‹ˆλ‹€.

ν•˜μ§€λ§Œ, 2, 3, 4번 μ§€ν‘œλŠ” λͺ¨λ‘ 0점으둜 λ™μΌν•œ μ μˆ˜μž…λ‹ˆλ‹€. λ”°λΌμ„œ 2, 3, 4번 μ§€ν‘œμ˜ 성격 μœ ν˜•μ€ μ‚¬μ „μˆœμœΌλ‘œ λΉ λ₯Έ C, J, Aμž…λ‹ˆλ‹€.

 

λ”°λΌμ„œ "RCJA"λ₯Ό return ν•΄μ•Ό ν•©λ‹ˆλ‹€.


🧞 풀이

function solution(survey, choices) {
    let total_points = {"R": 0, "T": 0, "C": 0, "F": 0, "J": 0, "M": 0, "A": 0, "N": 0};
    let answer = [];
    
    survey.forEach((e, i) => {
        let disagree_temp = e[0];
        let agree_temp = e[1];
        
        if (choices[i] > 4) {
            total_points[agree_temp] += choices[i] - 4;
        } else if (choices[i] < 4) {
            total_points[disagree_temp] += 4 - choices[i];
        }
    })
     
    if (total_points["R"] < total_points["T"]) {
        answer.push("T");
    } else {
        answer.push("R");
    }
    
    if (total_points["C"] < total_points["F"]) {
        answer.push("F");
    } else {
        answer.push("C");
    }
    
    if (total_points["J"] < total_points["M"]) {
        answer.push("M");
    } else {
        answer.push("J");
    }
    
    if (total_points["A"] < total_points["N"]) {
        answer.push("N");
    } else {
        answer.push("A");
    }
    
    return answer.join("");
}

πŸ’‘ μ•Œκ²Œ 된 점

  • forEach()μ—μ„œ indexλ₯Ό 적극 ν™œμš©ν•˜λ©΄, indexκΉŒμ§€ κΊΌλ‚΄μ„œ ν™œμš©ν•  수 μžˆλ‹€.
  • μ²˜μŒμ—λŠ” if문을 4개 μ‚¬μš©ν•˜μ§€ μ•Šκ³ , for문을 톡해, object의 key 값을 κΊΌλ‚΄ array둜 λ§Œλ“€μ–΄, λ°˜λ³΅μ„ ν•˜λ € ν–ˆμœΌλ‚˜, λ•Œλ‘œλŠ” λ‹¨μˆœν•œκ²Œ 더 직관적인 것 κ°™μ•„, λ‹€μŒκ³Ό 같이 ν’€μ—ˆλ‹€.

+ Recent posts