π λ¬Έμ
νλ‘κ·Έλλ¨Έμ€ 2022 KAKAO TECH INTERNSHIP μ±κ²© μ ν κ²μ¬νκΈ°
ꡬνν΄μΌ νλ κ²μ
μ£Όμ΄μ§ μ§νμ μ νμ§ λͺ©λ‘μ μννλ©° μ±κ²©μ νμ μ μλ₯Ό λμ ν΄μΌ νλ€. λͺ¨λ μμλ₯Ό λ°©λ¬Έν νμ λμλλ μ±κ²©μ νλΌλ¦¬ λΉκ΅νμ¬ λ λμ μ μλ₯Ό λ°μ μ±κ²©μ νμ νλ¨νλ€.
1οΈβ£ μ§λ¬Έμ μννλ©° κ° μ±κ²©μ νμ΄ μ»μ μ μλ₯Ό λμ ν΄μΌ νλ€.
κ° μ±κ²©μ νμ νλ‘νΌν°λ‘ κ°μ§ κ°μ²΄λ₯Ό μ μΈνκ³ κΈ°λ³Έ κ°μ 0μΌλ‘ μ΄κΈ°ννλ€.
νΉμ ν keyκ°μ κ°μ λμ νκΈ° λλ¬Έμ Map
μ μ¬μ©νλλ° μ½λκ° λ€μ κΈΈμ΄μ‘λ€.
λ§μ½ map μ체μ keyκ°μ λμνλ κ°μ λͺ¨λ μ΄κΈ°νλ₯Ό νλ€λ©΄ map.put("R", 0)
μ ꡬ문μ 8λ² λ°λ³΅ν΄μΌνκ³ , μ΄κΈ°νλ₯Ό νμ§ μμΌλ©΄ ν΄λΉ keyμ λμνλ κ°μ΄ mapμ μ‘΄μ¬νλμ§ μ²΄ν¬ν΄μΌ νκΈ° λλ¬Έμ κ°μ μ½μ
νλ ꡬ문μμ map.put("R", map.get("R") || 0 + score)
κ³Ό κ°μ΄ μ½λκ° κΈΈμ΄μ Έ κ°μ²΄λ₯Ό μ¬μ©νλ λ°©λ²μΌλ‘ μμ νλ€.
1
2
3
const solution = (survey, choices) => {
const result = { R: 0, T: 0, C: 0, F: 0, J: 0, M: 0, A: 0, N: 0 };
};
2οΈβ£ μ§λ¬Έμ μννλ©΄μ νΉμ μ±κ²©μ νμ μ μλ₯Ό λμ νλ€.
λ¬Έμ μ€λͺ μ λ°λ₯΄λ©΄ survey[i]μ 첫 λ²μ§Έ μΊλ¦ν°λ i+1λ² μ§λ¬Έμ λΉλμ κ΄λ ¨ μ νμ§λ₯Ό μ ννλ©΄ λ°λ μ±κ²© μ νμ μλ―Ένκ³ , survey[i]μ λ λ²μ§Έ μΊλ¦ν°λ i+1λ² μ§λ¬Έμ λμ κ΄λ ¨ μ νμ§λ₯Ό μ ννλ©΄ λ°λ μ±κ²© μ νμ μλ―Ένλ€.
μλμ νλ survey[i]
(μ§λ¬Έμ λν μ νμ§λ₯Ό μλ―Ένλ€.)μ λ»κ³Ό κ° μ±κ²© μ νμ λΆμ¬νλ μ μλ₯Ό λνλΈλ€.
choices | λ» | λΆμ¬λλ μ μ |
---|---|---|
1 | λ§€μ° λΉλμ | 3 |
2 | λΉλμ | 2 |
3 | μ½κ° λΉλμ | 1 |
4 | λͺ¨λ₯΄κ² μ | 0 |
5 | μ½κ° λμ | 1 |
6 | λμ | 2 |
7 | λ§€μ° λμ | 3 |
1 ~ 3κΉμ§λ λΉλμ μ νμ§, 5 ~ 7κΉμ§λ λμ μ νμ§μ μ μλ₯Ό λΆμ¬νλ€. 4λ μ΄λ μ νμ§μλ μ μλ₯Ό λΆμ¬νμ§ μλλ€. κ·Έλ¦¬κ³ λΆμ¬ν μ μμ κ°λ§ 보μμ λ, 1κ³Ό 7μ 3μ μ, 2μ 6μ 2μ , 3, 5λ 1μ μ λΆμ¬νλ€. μ΄λ choices[i] κ°μμ 4λ₯Ό λΊ κ°μ μ λκ°μΌλ‘ λΆμ¬ν μ μλ₯Ό μ½κ² κ³μ°ν μ μλ€.
μλ₯Ό λ€μ΄, survey[0]μ΄ βANβμ΄λ©° choices[0]μ΄ 7μ΄λΌλ©΄, choices[0]μ κ°μ΄ 5 ~ 7μ ν΄λΉνλ―λ‘ λμ μ νμ§λ₯Ό μ νν κ²μ΄κ³ , νλ¨ μ§ν μ€ N μ νμ 3μ (choices[0] - 4 = 3
)μ λΆμ¬νλ κ²μ΄λ€.
1
2
3
4
5
6
7
8
9
for (let i = 0; i < survey.length; i++) {
// ꡬ쑰 λΆν΄ ν λΉμΌλ‘ μ§λ¬Έμ λν λΉλμ μ ν μ§νμ λμ μ ν μ§νλ₯Ό μΆμΆνλ€.
// μ§λ¬Έμ λν μ νμ΄ λΉλμ κ΄λ ¨μ΄λ©΄ disAgree μ νμ μ μλ₯Ό λΆμ¬νκ³ , λμ κ΄λ ¨μ΄λ©΄ agree μ νμ μ μλ₯Ό λΆμ¬νλ€.
const [disAgree, agree] = survey[i].split("");
// λΉλμ λλ λμ μ¬λΆλ₯Ό νμΈνκΈ° μν΄ μ€κ° κ°μΈ 4λ³΄λ€ ν¬λ©΄ λμ, μμΌλ©΄ λΉλμ μ νμΌλ‘ νλ¨νλ€.
// λΆμ¬ν μ μλ μ λκ° ν¨μμΈ Math.absλ₯Ό μ΄μ©ν΄μ κ³μ°νλ€.
result[choices[i] <= 4 ? disAgree : agree] += Math.abs(4 - choices[i]);
}
3οΈβ£ λͺ¨λ μ§λ¬Έμ νμΈνμλ€λ©΄ λμλλ μ±κ²©μ νλΌλ¦¬ λΉκ΅νμ¬ λ λμ μ μλ₯Ό κ°μ§ μ νμ λ°ννλ€.
μ§λ¬Έ λͺ©λ‘μ μννκΈ° μ μ λμλλ μ±κ²©μ νλΌλ¦¬ λ°°μ΄μ μ μ₯ν΄λλ€. μ μκ°μ λΉκ΅ν λ κ°μ κ°μ κ°μ§λ©΄ μ¬μ μμΌλ‘ λΉ λ₯Έ μ±κ²© μ νμ κ²μ¬μμ μ±κ²© μ νμ΄λΌκ³ νλ¨νλ―λ‘ μ¬μ μμΌλ‘ μ λ ¬ν΄μΌνλ€. μλ₯Ό λ€μ΄, βTRβμ΄ μλ βRTβλΌλ κ°μ μ¬μ©ν΄μΌ νλ€.
1
2
3
4
5
6
7
8
9
10
const TYPES = ["RT", "CF", "JM", "AN"];
/* ... μ§λ¬Έμ μννλ©° μ±κ²©μ νμ μ μλ₯Ό λΆμ¬νλ€ ... */
return TYPES.map((type) => {
const [c1, c2] = type.split("");
// λ λμ μ μλ₯Ό κ°μ§ μ νμ λ°ννλλ° μ¬μ μμΌλ‘ μ λ ¬ν΄λκΈ° λλ¬Έμ λ°λ‘ μ λ ¬ν νμμλ€.
return result[c1] < result[c2] ? c2 : c1;
}).join("");
πΉ μ½λ
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
const solution = (survey, choices) => {
const TYPES = ["RT", "CF", "JM", "AN"];
const result = { R: 0, T: 0, C: 0, F: 0, J: 0, M: 0, A: 0, N: 0 };
for (let i = 0; i < survey.length; i++) {
const [disAgree, agree] = survey[i].split("");
const addScoreType = choices[i] <= 4 ? disAgree : agree;
result[choices[i] <= 4 ? disAgree : agree] += Math.abs(4 - choices[i]);
}
return TYPES.map((type) => {
const [c1, c2] = type.split("");
return result[c1] < result[c2] ? c2 : c1;
}).join("");
};