
ํด๋น ๊ฒ์๋ฌผ์ youngcheon๋์ velog ๊ฒ์๋ฌผ ์ค ํ๋ก๊ทธ๋๋จธ์ค LV.4 ์ซ์ ๋ธ๋ก JS ๋ฅผ ์ฐธ๊ณ ํ์ฌ ์์ฑ๋์์์ ๋ฏธ๋ฆฌ ๋ฐํ๋๋ค.
๋๋ง์ ์นด์นด์ค ์ฑ๊ฒฉ ์ ํ ๊ฒ์ฌ์ง๋ฅผ ๋ง๋ค๋ ค๊ณ  ํฉ๋๋ค.
์ฑ๊ฒฉ ์ ํ ๊ฒ์ฌ๋ ๋ค์๊ณผ ๊ฐ์ 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๋ฒ์งธ ์ง๋ฌธ์ ์ ํ์ง๋ฅผ ์๋ฏธํฉ๋๋ค.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" | 
์ ์ถ๋ ฅ ์ ์ค๋ช
1๋ฒ ์ง๋ฌธ์ ์ ์ ๋ฐฐ์น๋ ์๋ ํ์ ๊ฐ์ต๋๋ค.
| ์ ํ์ง | ์ฑ๊ฒฉ ์ ํ ์ ์ | 
|---|---|
| ๋งค์ฐ ๋น๋์ | ์ดํผ์นํ 3์  | 
| ๋น๋์ | ์ดํผ์นํ 2์  | 
| ์ฝ๊ฐ ๋น๋์ | ์ดํผ์นํ 1์  | 
| ๋ชจ๋ฅด๊ฒ ์ | ์ด๋ค ์ฑ๊ฒฉ ์ ํ๋ ์ ์๋ฅผ ์ป์ง ์์ต๋๋ค | 
| ์ฝ๊ฐ ๋์ | ๋ค์คํ 1์  | 
| ๋์ | ๋ค์คํ 2์  | 
| ๋งค์ฐ ๋์ | ๋ค์คํ 3์  | 
1๋ฒ ์ง๋ฌธ์์๋ ์ง๋ฌธ์ ์์์ ๋ค๋ฅด๊ฒ ๋น๋์ ๊ด๋ จ ์ ํ์ง๋ฅผ ์ ํํ๋ฉด ์ดํผ์นํ(A) ์ฑ๊ฒฉ ์ ํ์ ์ ์๋ฅผ ์ป๊ณ , ๋์ ๊ด๋ จ ์ ํ์ง๋ฅผ ์ ํํ๋ฉด ๋ค์คํ(N) ์ฑ๊ฒฉ ์ ํ์ ์ ์๋ฅผ ์ป์ต๋๋ค.
1๋ฒ ์ง๋ฌธ์์ ๊ฒ์ฌ์๋ ์ฝ๊ฐ ๋์ ์ ํ์ง๋ฅผ ์ ํํ์ผ๋ฏ๋ก ๋ค์คํ(N) ์ฑ๊ฒฉ ์ ํ ์ ์ 1์ ์ ์ป๊ฒ ๋ฉ๋๋ค.
2๋ฒ ์ง๋ฌธ์ ์ ์ ๋ฐฐ์น๋ ์๋ ํ์ ๊ฐ์ต๋๋ค.
| ์ ํ์ง | ์ฑ๊ฒฉ ์ ํ ์ ์ | 
|---|---|
| ๋งค์ฐ ๋น๋์ | ์ฝํ 3์  | 
| ๋น๋์ | ์ฝํ 2์  | 
| ์ฝ๊ฐ ๋น๋์ | ์ฝํ 1์  | 
| ๋ชจ๋ฅด๊ฒ ์ | ์ด๋ค ์ฑ๊ฒฉ ์ ํ๋ ์ ์๋ฅผ ์ป์ง ์์ต๋๋ค | 
| ์ฝ๊ฐ ๋์ | ํ๋ก๋ํ 1์  | 
| ๋์ | ํ๋ก๋ํ 2์  | 
| ๋งค์ฐ ๋์ | ํ๋ก๋ํ 3์  | 
2๋ฒ ์ง๋ฌธ์์ ๊ฒ์ฌ์๋ ์ฝ๊ฐ ๋น๋์ ์ ํ์ง๋ฅผ ์ ํํ์ผ๋ฏ๋ก ์ฝํ(C) ์ฑ๊ฒฉ ์ ํ ์ ์ 1์ ์ ์ป๊ฒ ๋ฉ๋๋ค.
3๋ฒ ์ง๋ฌธ์ ์ ์ ๋ฐฐ์น๋ ์๋ ํ์ ๊ฐ์ต๋๋ค.
| ์ ํ์ง | ์ฑ๊ฒฉ ์ ํ ์ ์ | 
|---|---|
| ๋งค์ฐ ๋น๋์ | ๋ฌด์งํ 3์  | 
| ๋น๋์ | ๋ฌด์งํ 2์  | 
| ์ฝ๊ฐ ๋น๋์ | ๋ฌด์งํ 1์  | 
| ๋ชจ๋ฅด๊ฒ ์ | ์ด๋ค ์ฑ๊ฒฉ ์ ํ๋ ์ ์๋ฅผ ์ป์ง ์์ต๋๋ค | 
| ์ฝ๊ฐ ๋์ | ์ ์ด์งํ 1์  | 
| ๋์ | ์ ์ด์งํ 2์  | 
| ๋งค์ฐ ๋์ | ์ ์ด์งํ 3์  | 
3๋ฒ ์ง๋ฌธ์์ ๊ฒ์ฌ์๋ ๋น๋์ ์ ํ์ง๋ฅผ ์ ํํ์ผ๋ฏ๋ก ๋ฌด์งํ(M) ์ฑ๊ฒฉ ์ ํ ์ ์ 2์ ์ ์ป๊ฒ ๋ฉ๋๋ค.
4๋ฒ ์ง๋ฌธ์ ์ ์ ๋ฐฐ์น๋ ์๋ ํ์ ๊ฐ์ต๋๋ค.
| ์ ํ์ง | ์ฑ๊ฒฉ ์ ํ ์ ์ | 
|---|---|
| ๋งค์ฐ ๋น๋์ | ๋ผ์ด์ธํ 3์  | 
| ๋น๋์ | ๋ผ์ด์ธํ 2์  | 
| ์ฝ๊ฐ ๋น๋์ | ๋ผ์ด์ธํ 1์  | 
| ๋ชจ๋ฅด๊ฒ ์ | ์ด๋ค ์ฑ๊ฒฉ ์ ํ๋ ์ ์๋ฅผ ์ป์ง ์์ต๋๋ค | 
| ์ฝ๊ฐ ๋์ | ํ๋ธํ 1์  | 
| ๋์ | ํ๋ธํ 2์  | 
| ๋งค์ฐ ๋์ | ํ๋ธํ 3์  | 
4๋ฒ ์ง๋ฌธ์์ ๊ฒ์ฌ์๋ ๋งค์ฐ ๋์ ์ ํ์ง๋ฅผ ์ ํํ์ผ๋ฏ๋ก ํ๋ธํ(T) ์ฑ๊ฒฉ ์ ํ ์ ์ 3์ ์ ์ป๊ฒ ๋ฉ๋๋ค.
5๋ฒ ์ง๋ฌธ์ ์ ์ ๋ฐฐ์น๋ ์๋ ํ์ ๊ฐ์ต๋๋ค.
| ์ ํ์ง | ์ฑ๊ฒฉ ์ ํ ์ ์ | 
|---|---|
| ๋งค์ฐ ๋น๋์ | ๋ค์คํ 3์  | 
| ๋น๋์ | ๋ค์คํ 2์  | 
| ์ฝ๊ฐ ๋น๋์ | ๋ค์คํ 1์  | 
| ๋ชจ๋ฅด๊ฒ ์ | ์ด๋ค ์ฑ๊ฒฉ ์ ํ๋ ์ ์๋ฅผ ์ป์ง ์์ต๋๋ค | 
| ์ฝ๊ฐ ๋์ | ์ดํผ์นํ 1์  | 
| ๋์ | ์ดํผ์นํ 2์  | 
| ๋งค์ฐ ๋์ | ์ดํผ์นํ 3์  | 
5๋ฒ ์ง๋ฌธ์์ ๊ฒ์ฌ์๋ ์ฝ๊ฐ ๋์ ์ ํ์ง๋ฅผ ์ ํํ์ผ๋ฏ๋ก ์ดํผ์นํ(A) ์ฑ๊ฒฉ ์ ํ ์ ์ 1์ ์ ์ป๊ฒ ๋ฉ๋๋ค.
1๋ฒ๋ถํฐ 5๋ฒ๊น์ง ์ง๋ฌธ์ ์ฑ๊ฒฉ ์ ํ ์ ์๋ฅผ ํฉ์น๋ฉด ์๋ ํ์ ๊ฐ์ต๋๋ค.
| ์งํ ๋ฒํธ | ์ฑ๊ฒฉ ์ ํ | ์ ์ | ์ฑ๊ฒฉ ์ ํ | ์ ์ | 
|---|---|---|---|---|
| 1๋ฒ ์งํ | ๋ผ์ด์ธํ(R) | 0 | ํ๋ธํ(T) | 3 | 
| 2๋ฒ ์งํ | ์ฝํ(C) | 1 | ํ๋ก๋ํ(F) | 0 | 
| 3๋ฒ ์งํ | ์ ์ด์งํ(J) | 0 | ๋ฌด์งํ(M) | 2 | 
| 4๋ฒ ์งํ | ์ดํผ์นํ(A) | 1 | ๋ค์คํ(N) | 1 | 
๊ฐ ์งํ์์ ๋ ์ ์๊ฐ ๋์ T,C,M์ด ์ฑ๊ฒฉ ์ ํ์
๋๋ค.
ํ์ง๋ง, 4๋ฒ ์งํ๋ 1์ ์ผ๋ก ๋์ผํ ์ ์์
๋๋ค. ๋ฐ๋ผ์, 4๋ฒ ์งํ์ ์ฑ๊ฒฉ ์ ํ์ ์ฌ์ ์์ผ๋ก ๋น ๋ฅธ A์
๋๋ค.
๋ฐ๋ผ์ "TCMA"๋ฅผ return ํด์ผ ํฉ๋๋ค.
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 result = ''
    // ๊ฒฝ์ฐ์ ์
    const MBTI = ['RT','CF','JM','AN']
    // *ํต์ฌ: ์์๊ฐ ์๋ ๊ฐ์ฒด๊ฐ ํ์ํ๊ธฐ์ Map์ฌ์ฉ
    const MBTI_Map = new Map()
    // ๋ชจ๋  ๊ฐ์ฒด 0์ผ๋ก ์ด๊ธฐํ
    Array('R','T','C','F','J','M','A','N').forEach(a => MBTI_Map.set(a,0))
    // ๋ชจ๋  ์ ํ ๋ฐ๋ณต
    survey.forEach((item,idx) => {
        // ์ฒซ๋ฒ์งธ ์์ ๋๋ฒ์งธ ์ ์ ์
        const [a,b] = item
        // -4๋ฅผ ํ ๊ฒฝ์ฐ ์์ ๊ทธ๋๋ก ๋ฐ์์ด ๊ฐ๋ฅ
        const num = choices[idx]-4
        // ํน์  ์ ํ์ ์ฑ๊ฒฉ์ด ์๋ค๋ฉด
        if(num > 0) {
            MBTI_Map.set(b,MBTI_Map.get(b)+num)
        } else if (num < 0){
            MBTI_Map.set(a,MBTI_Map.get(a)+Math.abs(num))
        }
    })
    // ์ ์ฑ์ด ๋์จ ์ ์ค ์ํ๋ฒณ ์ฌ์ ์์ผ๋ก ์ฐ์ ์์๋ฅผ ๋ 
    return MBTI.map((item,idx) => {
        return [...item].sort((a,b) => MBTI_Map.get(b)-MBTI_Map.get(a))[0]
    }).join("")
}
์ด ๋ฌธ์ ๋ MBTI๋ฅผ ๊ตฌํ๊ธฐ ์ํ ์์๊ฐ ์๋ ๊ฐ์ฒด๊ฐ ์ค์ํ ๋ฌธ์ ์๋ ๊ฒ ๊ฐ๋ค ๋ค๋ฅธ ๋ฐฉ๋ฒ๋ ๋ง๊ฒ ์ง๋ง Map ์๋ฃํ์ ํ์ฉํด ์์ฌ์ด ๋ฌธ์ ํ์ด๊ฐ ๊ฐ๋ฅํ์