[programmers] 위클리챌린지2주차/상호평가
resilient
·2021. 8. 20. 10:11
728x90
반응형
https://programmers.co.kr/learn/courses/30/lessons/83201
코딩테스트 연습 - 2주차
[[100,90,98,88,65],[50,45,99,85,77],[47,88,95,80,67],[61,57,100,80,65],[24,90,94,75,65]] "FBABD" [[70,49,90],[68,50,38],[73,31,100]] "CFD"
programmers.co.kr
- 이 문제는 먼저 네이버 2021년 4월에 시험 봤던 상반기 신입 코딩 테스트 1번 문제였다.
- 당시에는 i랑 j 랑 행과 열을 잘못 봐서 시간을 생각보다 많이 썼던 문제였다.
- 풀이는 간단하다. 점수를 인원수만큼 첫 번째 for문을 돌리면서 돌 때마다 temp라는 리스트를 빈 리스트로 초기화해준다.
그리고 인원수만큼 또 한 번 for문을 돌려주면서 점수들을 temp 안에 넣고 첫 번째 for문을 돌 때 temp [i] 값이 자기가 측정한 자기 자신의 점수니까 temp [i] 값만 비교해주면 된다. - temp [i] 즉, 자신이 측정한 자신의 점수가 가장 크거나 유일한 값일 때, 그 값을 del (삭제) 시켜주고 만약에 둘 중 하나라도 아리 경우 temp [i]가 가장 작거나 유일한 값일 때를 고려해준다.
- 자신이 측정한 값이 유일하면서 가장 크거나 작을 경우를 제외한 값들이 들어 있는 temp 리스트의 합에서 temp리스트의 길이를 나눠주면 평균이 되고, 평균을 if문으로 answer라는 빈 문자열에 더해주면 된다.
def solution(scores):
answer = ''
length = len(scores)
for i in range(length):
score = 0
cnt = 0
temp = []
for j in range(length):
temp.append(scores[j][i])
# i는 0,1,2,3,4 순서대로 자기꺼만 확인하면 된다.
# 자기자 측정한 자기 점수가 젤 크거나 작을 때 유일한 값이면 지운다.
if temp[i] == min(temp) and temp.count(temp[i]) == 1:
del temp[i]
elif temp[i] == max(temp) and temp.count(temp[i]) == 1:
del temp[i]
average = sum(temp) // len(temp)
if average >= 90:
answer += 'A'
elif 80 <= average < 90:
answer += 'B'
elif 70 <= average < 80:
answer += 'C'
elif 50 <= average < 70:
answer += 'D'
elif average < 50:
answer += 'F'
return answer
반응형
'자료구조 & 알고리즘 > 프로그래머스(programmers)' 카테고리의 다른 글
[programmers] 크레인인형뽑기게임 (2019 카카오 개발자 겨울 인턴십) (0) | 2021.08.24 |
---|---|
[programmers] 튜플 (2019 카카오 개발자 겨울 인턴십) (0) | 2021.08.23 |
[programmers] 전화번호목록 (0) | 2021.08.16 |
[programmers] 가장 긴 팰린드롬 (0) | 2021.07.30 |
[programmers] 멀리뛰기 (0) | 2021.07.29 |