1. 상호평가
- 난이도
- Level 1
- 출처
A. 📜 문제
- Level 1
위 프로그래머스 사이트에 접속하여 문제를 확인해주세요.
B. 💡 내 답안
a. 😊 1차 시도 (성공)
def solution(scores):
arrays = []
for i in zip(*scores):
arrays.append(i)
# print(array)
answers = []
for i in range(len(arrays)):
me = arrays[i][i]
max_array = max(arrays[i])
min_array = min(arrays[i])
temp = sum(arrays[i])
temp_len = len(arrays[i])
if (me == max_array and arrays[i].count(me) == 1) or (me == min_array and arrays[i].count(me) == 1):
temp -= me
temp_len -= 1
answers.append(temp/temp_len)
# print(answers)
grade = ''
for answer in answers:
if 90 <= answer:
grade += 'A'
elif 80 <= answer < 90:
grade += 'B'
elif 70 <= answer < 80:
grade += 'C'
elif 50 <= answer < 70:
grade += 'D'
elif answer < 50:
grade += 'F'
return grade
a. 🙄 회고
내 풀이
- 열을 비교해야하는 것을 대각선을 기준으로 행렬을 교환하는 전치행렬을 사용해서 풀었다.
반성
- zip 함수를 완벽하게 쓸줄 아는게 아닌 것 같다.
결론
- 이런 문제는 크레인 문제가 있으니 그런 것들을 풀어보자.
C. 🧐 문제 해설
이해한 내용을 바탕으로 작성했습니다.
def solution(scores):
arrays = []
for i in zip(*scores):
arrays.append(i)
# print(array)
answers = []
for i in range(len(arrays)):
me = arrays[i][i]
max_array = max(arrays[i])
min_array = min(arrays[i])
temp = sum(arrays[i])
temp_len = len(arrays[i])
if (me == max_array and arrays[i].count(me) == 1) or (me == min_array and arrays[i].count(me) == 1):
temp -= me
temp_len -= 1
answers.append(temp/temp_len)
# print(answers)
grade = ''
for answer in answers:
if 90 <= answer:
grade += 'A'
elif 80 <= answer < 90:
grade += 'B'
elif 70 <= answer < 80:
grade += 'C'
elif 50 <= answer < 70:
grade += 'D'
elif answer < 50:
grade += 'F'
return grade
a. 🙄 회고
내 풀이
- 열을 비교해야하는 것을 대각선을 기준으로 행렬을 교환하는 전치행렬을 사용해서 풀었다.
반성
- zip 함수를 완벽하게 쓸줄 아는게 아닌 것 같다.
결론
- 이런 문제는 크레인 문제가 있으니 그런 것들을 풀어보자.
C. 🧐 문제 해설
이해한 내용을 바탕으로 작성했습니다.
내 풀이
반성
결론
이해한 내용을 바탕으로 작성했습니다.
이런 전치 연산은 zip(*value)을 사용하면 편하게 해결할 수 있다.
그리고 평균을 구할 때, 자기 자신이 평가한 점수가 유일한 최소 혹은 최대 점수가 되는 경우에만 자기 점수를 제외하고 평균을 구한다.
참고문헌
위클리 챌린지. 코딩테스트 연습 - 2주차_상호평가 | 프로그래머스 (programmers.co.kr). Programmers. (accessed Oct 11, 2021)
Ghost