🐺 문제 설명
A반 학생들은 시험이 끝난 뒤 성적이 나오기 전 자기 시험지를 가채점해 보았습니다. 이후에 선생님이 실제 성적을 불러 줄 때 가채점한 점수와 실제 성적이 다른 학생들이 있어 선생님께 문의를 하려고 합니다.
성적을 문의하려는 학생들의 번호가 담긴 정수 리스트 numbers와 가채점한 점수가 성적을 문의하려는 학생 순서대로 담긴 정수 리스트 our_score, 실제 성적이 번호 순서대로 담긴 정수 리스트 score_list가 주어집니다. 주어진 solution 함수는 가채점한 점수가 실제 성적과 동일하다면 "Same"을, 다르다면 "Different"를 순서대로 리스트에 담아 return하는 함수입니다. solution 함수가 올바르게 작동하도록 한 줄을 수정해 주세요.
🐺 제한 사항
- 1 ≤ numbers의 길이 = our_score의 길이 ≤ 10
- 1 ≤ numbers의 원소 ≤ 31
- 0 ≤ our_score의 원소 ≤ 100
- our_score[i]는 numbers[i]번 학생이 가채점한 점수입니다.
- numbers는 중복된 원소를 가지지 않습니다.
- 2 ≤ score_list의 길이 ≤ 31
- 0 ≤ score_list의 원소 ≤ 100
score_list에는 실제 성적이 [1번 학생 성적, 2번 학생 성적, 3번 학생 성적 …] 순서로 들어있습니다.
🐺 입출력 예
🐺 입출력 예 설명
입출력 예 #1
1번 학생이 가채점한 성적은 100점으로 실제 성적과 같기 때문에 "Same"을 담아 return합니다.
입출력 예 #2
3번 학생이 가채점한 성적은 85점으로 실제 성적 38점과 다르기 때문에 "Different"를, 4번 학생이 채점한 성적은 93점으로 실제 성적과 같기 때문에 "Same"을 담아 return합니다.
🐺 문제
* 디버깅 문제는 한 줄만 수정해서 오류를 해결하는 문제입니다.
def solution(numbers, our_score, score_list):
answer = []
for i in range(len(numbers)):
if numbers[our_score[i]] == score_list[i]:
answer.append("Same")
else:
answer.append("Different")
return answer
🐺 문제 풀이
문제에서 요구하는 부분은 가채점한 점수(our_score) 와 학생 번호에 해당하는 실제 성적을 비교하는 것입니다.
이 때 numbers[our_score[i]]는 잘못된 참조를 하고 있습니다. our_score는 가채점한 점수를 가지고 있는데, 점수로 인덱스를 참조하고 있어 논리적으로 맞지 않습니다. 그리고 score_list[i] 역시 잘못되었습니다.
score_list는 실제 성적이 담겨있는 리스트인데, our_score[i]는 numbers[i]번 학생이 가채점한 점수이기 때문에 numbers[i]에 해당하는 학생의 성적을 확인하기 위해선 score_list[numbers[i]-1]로 변경해야 합니다.
그 이유는 학생 번호가 1부터 시작하기 때문에 인덱스를 맞춰주기 위해선 numbers[i]에 대해 1을 빼야 합니다.
수정된 코드는 다음과 같습니다.
def solution(numbers, our_score, score_list):
answer = []
for i in range(len(numbers)):
if our_score[i] == score_list[numbers[i]-1]:
answer.append("Same")
else:
answer.append("Different")
return answer