# 위클리 챌린지 - 2주차 - 상호평가

- Author: @mildsalmon
- Published: 2021-10-11
- Updated: 2021-10-16
- Source: http://blex.me/@mildsalmon/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%A8%B8%EC%8A%A4-%EC%9C%84%ED%81%B4%EB%A6%AC-%EC%B1%8C%EB%A6%B0%EC%A7%80-2%EC%A3%BC%EC%B0%A8-%EC%83%81%ED%98%B8%ED%8F%89%EA%B0%80
- Tags: 파이썬, 알고리즘, 프로그래머스, 코딩테스트, 문제

---

# 1. 상호평가

- 난이도
	- Level 1
- 출처
	- [코딩테스트 연습 - 2주차_상호평가 | 프로그래머스 (programmers.co.kr)](https://programmers.co.kr/learn/courses/30/lessons/83201)

### A. 📜 문제

위 프로그래머스 사이트에 접속하여 문제를 확인해주세요.
	
### B. 💡 내 답안

##### a. 😊 1차 시도 (성공)

```python

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. 🧐 문제 해설

> 이해한 내용을 바탕으로 작성했습니다.

![](https://static.blex.me/images/content/2021/10/11/2021_10_11_20_KcuHpO2XGs4KKHeJKAzt.jpg)

![](https://static.blex.me/images/content/2021/10/11/2021_10_11_20_YyI8Pr7XI6eKKjYvPXt7.jpg)

이런 전치 연산은 zip(\*value)을 사용하면 편하게 해결할 수 있다.

그리고 평균을 구할 때, 자기 자신이 평가한 점수가 **유일한** 최소 혹은 최대 점수가 되는 경우에만 자기 점수를 제외하고 평균을 구한다.

# 참고문헌

위클리 챌린지. [코딩테스트 연습 - 2주차_상호평가 | 프로그래머스 (programmers.co.kr)](https://programmers.co.kr/learn/courses/30/lessons/83201). Programmers. (accessed Oct 11, 2021)
