https://school.programmers.co.kr/learn/courses/30/lessons/118666
๋ฌธ์
๋ฌธ์ ์ค๋ช
๋๋ง์ ์นด์นด์ค ์ฑ๊ฒฉ ์ ํ ๊ฒ์ฌ์ง๋ฅผ ๋ง๋ค๋ ค๊ณ ํฉ๋๋ค.
์ฑ๊ฒฉ ์ ํ ๊ฒ์ฌ๋ ๋ค์๊ณผ ๊ฐ์ 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" |
์์ค ์ฝ๋
# 1
def solution(survey, choices):
answer = ''
types = [["R","T"],["C","F"],["J","M"],["A","N"]]
scores = [[0,0],[0,0],[0,0],[0,0]]
# survey ๊ธฐ๋ฐ ์ ์ ๊ณ์ฐ
n = len(survey)
for idx in range(n):
front = survey[idx][0]
back = survey[idx][1]
if "R" in survey[idx]:
if choices[idx] < 4:
scores[0][types[0].index(front)] += (4-choices[idx])
else:
scores[0][types[0].index(back)] += (choices[idx]-4)
elif "C" in survey[idx]:
if choices[idx] < 4:
scores[1][types[1].index(front)] += (4-choices[idx])
else:
scores[1][types[1].index(back)] += (choices[idx]-4)
elif "J" in survey[idx]:
if choices[idx] < 4:
scores[2][types[2].index(front)] += (4-choices[idx])
else:
scores[2][types[2].index(back)] += (choices[idx]-4)
elif "A" in survey[idx]:
if choices[idx] < 4:
scores[3][types[3].index(front)] += (4-choices[idx])
else:
scores[3][types[3].index(back)] += (choices[idx]-4)
# scores๋ฅผ ๋ณด๊ณ ์ ์๊ฐ ๋์ ์ ํ ์ถ๋ ฅ
for idx in range(4):
if scores[idx][0] >= scores[idx][1]:
answer += types[idx][0]
else:
answer += types[idx][1]
return answer
ํ์ด # 1
- ๊ฐ ํ์ ๊ณผ ์ ์๋ฅผ 2์ฐจ์ ๋ฐฐ์ด๋ก ์์ฑ
- survey ๊ธธ์ด๋งํผ ์ธ๋ฑ์ค๋ฅผ ๋๋ฉด์ ์ ์๋ฅผ ๊ณ์ฐ
- survey์์ ์๊ธ์์ ๋ท๊ธ์๋ฅผ ๊ตฌ๋ถ
- ์ด๋ค ๊ธ์๋ฅผ ํฌํจํ๊ณ ์๋์ง ํ์ธํ๊ณ socres์ ์ ์ ๋ํ๊ธฐ
- ์ ์๊ฐ 4๋ณด๋ค ์์ผ๋ฉด ์๊ธ์์ ์ธ๋ฑ์ค์ 4๋ณด๋ค ํฌ๋ฉด ๋ท๊ธ์์ ์ธ๋ฑ์ค์ ์ ์ ๋ํ๊ธฐ
- ์์์ ๊ณ์ฐํ scores๋ฅผ ๋๋ฉด์ ์ ์๊ฐ ๋์ ๊ฐ์ type์ answer๋ก ์ถ๋ ฅ
# 2
def solution(survey, choices):
answer = ''
scores = {"A":0, "N":0, "C":0, "F":0, "M":0, "J":0, "R":0, "T":0}
for idx, choice in enumerate(choices):
if choice - 4 > 0:
scores[survey[idx][1]] += choice - 4
elif choice - 4 < 0:
scores[survey[idx][0]] += 4 - choice
if scores["R"] >= scores["T"]:
answer += "R"
else:
answer += "T"
if scores["C"] >= scores["F"]:
answer += "C"
else:
answer += "F"
if scores["J"] >= scores["M"]:
answer += "J"
else:
answer += "M"
if scores["A"] >= scores["N"]:
answer += "A"
else:
answer += "N"
return answer
ํ์ด #2
- ๋์ ๋๋ฆฌ์ ํค์ ์ ํ ๊ฐ์ ์ ์๋ฅผ ํ๊ธฐ
- ์ ์๊ฐ 4๋ณด๋ค ์์ผ๋ฉด ์๊ธ์์ ์ธ๋ฑ์ค์ 4๋ณด๋ค ํฌ๋ฉด ๋ท๊ธ์์ ์ธ๋ฑ์ค์ ์ ์ ๋ํ๊ธฐ
- RT, CF, JM, AN์ ์ ์๋ฅผ ๊ฐ๊ฐ ๋น๊ตํด์ answer๋ก ์ถ๋ ฅ
# 3
def solution(survey, choices):
types = {"RT":0,"CF":0,"JM":0,"AN":0}
for A,B in zip(survey,choices):
if A not in types.keys():
A = A[::-1]
types[A] -= B-4
else:
types[A] += B-4
answer = ''
for name in types.keys():
if types[name] > 0:
answer += name[1]
elif types[name] < 0:
answer += name[0]
else:
answer += sorted(name)[0]
return answer
ํ์ด #3
- ์ง์ด ๋๋ ์ ํ๋ผ๋ฆฌ ๋์ ๋๋ฆฌ์ ํค๋ก ๊ตฌ์ฑ
- survey์ ์๋ ๋ฌธ์๊ฐ ๋์
๋๋ฆฌ์ ํค๊ฐ ์๋ ๊ฒฝ์ฐ์ ํค๋ฅผ ์ญ์์ผ๋ก ๋ฐ๊พธ๊ณ ์ ์ ๋นผ๊ธฐ (์์ ๋ณ๊ฒฝ O)
- ์ ์๊ฐ ๋์ผ๋ฉด (์ ์-4)๊ฐ 0๋ณด๋ค ํฌ๋ฏ๋ก ์์ = ๋ค์ ์๋ ๋ฌธ์์ ์ ์ ๋นผ๊ธฐ
- ์ ์๊ฐ ๋ฎ์ผ๋ฉด (์ ์-4)๊ฐ 0๋ณด๋ค ์์ผ๋ฏ๋ก ์์ = ๋ค์ ์๋ ๋ฌธ์์ ์ ์ ๋ํ๊ธฐ
- survey์ ์๋ ๋ฌธ์๊ฐ ๋์
๋๋ฆฌ์ ํค์ธ ๊ฒฝ์ฐ์๋ ๊ทธ๋ฅ ์ ์ ๋ํ๊ธฐ (์์ ๋ณ๊ฒฝ X)
- ์ ์๊ฐ ๋์ผ๋ฉด (์ ์-4)๊ฐ 0๋ณด๋ค ํฌ๋ฏ๋ก ์์ = ๋ค์ ์๋ ๋ฌธ์์ ์ ์ ๋ํ๊ธฐ
- ์ ์๊ฐ ๋ฎ์ผ๋ฉด (์ ์-4)๊ฐ 0๋ณด๋ค ์์ผ๋ฏ๋ก ์์ = ๋ค์ ์๋ ๋ฌธ์์ ์ ์ ๋นผ๊ธฐ
- ์์ ๋ฐฉ์๋๋ก ์ ์๋ฅผ ๋ํ๊ณ ๋นผ๋ฉด ์ ์๋ ๊ฒฐ๊ตญ ํค์ ๋ท ๋ฌธ์ ๊ธฐ๋ฐ
- ์ ์๊ฐ 0๋ณด๋ค ํฌ๋ฉด ๋ท ๋ฌธ์๋ฅผ ์ถ๋ ฅํ๊ณ 0๋ณด๋ค ์์๋ฉด ์ ๋ฌธ์๋ฅผ ์ถ๋ ฅ
๋ฌธ์ ์ ๋ํด ์ค๋ช ์ด ์์ธํด์ ์ดํด๋ ์ ๋์๋๋ฐ ์ฝ๋๋ฅผ ๊ตฌํํ๋ ค๋๊น ์ข ๋ณต์กํด์ก๋ค. ์ฒซ ๋ฒ์งธ ํ์ด๋ ์ ์๊ฐ 4๋ณด๋ค ์์ผ๋ฉด ์์ ์๋ ๋ฌธ์์ +3, 4๋ณด๋ค ํฌ๋ฉด ๋ค์ ์๋ ๋ฌธ์์ +3์ด ๋๋ ๊ฒ์ ์ด์ฉํด์ ํ์๋ค. ์ฒซ ๋ฒ์งธ ํ์ด ๊ธฐ๋ฐ์ผ๋ก ๋์ ๋๋ฆฌ๋ฅผ ์ด์ฉํด์ ๋ ๋ฒ์งธ ํ์ด๊น์ง ๋ง๋ค์๋๋ฐ ๋ค๋ฅธ ์ฌ๋ ํ์ด๋ฅผ ๋ณด๋ค ๋ณด๋ ์ธ ๋ฒ์งธ ํ์ด๊ฐ ์ง์ง ์ฝํฌ๋น ์ด์ด์ ์ถ๊ฐํ๋ค....๋ฌธ์์ด์ ๋ฐ๊พธ๋ฉด์ ์ ์ ๋ํ๊ธฐ? ๋๋์ฒด ์ด๋ฐ ์๊ฐ์ ์ด๋ป๊ฒ ํ์๋๊ฑฐ์์? ํด์ํ๊ธฐ๋ ์ด๋ ค์ ๋๋ฐ...์ฒ์ฌ ์๋์ ๊ฐ์...?
'์ฝ๋ฉ ๋ฌธ์ ํ์ด ๐ป > ํ๋ก๊ทธ๋๋จธ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ๋ก๊ทธ๋๋จธ์ค / ํ์ด์ฌ] Lv.1 ๊ธฐ์ฌ๋จ์์ ๋ฌด๊ธฐ (1) | 2023.12.22 |
---|---|
[ํ๋ก๊ทธ๋๋จธ์ค / ํ์ด์ฌ] Lv.1 ์ซ์ ์ง๊ฟ (0) | 2023.12.15 |
[ํ๋ก๊ทธ๋๋จธ์ค / ํ์ด์ฌ] Lv.0 ๊ตฌ์ฌ์ ๋๋๋ ๊ฒฝ์ฐ์ ์ (0) | 2023.12.14 |
[ํ๋ก๊ทธ๋๋จธ์ค / ํ์ด์ฌ] Lv.0 ๊ฒน์น๋ ์ ๋ถ์ ๊ธธ์ด (1) | 2023.12.05 |
[ํ๋ก๊ทธ๋๋จธ์ค / ํ์ด์ฌ] Lv.0 ํน์ดํ ์ ๋ ฌ (1) | 2023.12.05 |