min 값을 점수[0]으로 초기화 했을 때 테스트케이스 5번 exit_code1이었나 오류가 나는 이유가 뭔가요?
295
작성한 질문수 9
import sys
sys.stdin = open('input.txt', 'rt')
N = int(input())
score = list(map(int, input().split()))
ave = int((sum(score) / N) + 0.5)
min = score[0]
for i,v in enumerate(score):
value = abs(v - ave)
#print(value)
if value < min:
min = value
idx = i
tmp_score = v
elif value == min:
if v > tmp_score:
min = value
idx = i
tmp_score = v
print(ave, idx + 1)작성한 코드입니다.
in5 는
5
1 2 3 4 5 로 입력을 받는데 해당 케이스 통과를 못하네요.
비쥬얼스튜디오에서 돌려보니 tmp_score가 정의되지 않았다고 뜨네요.
min값을 초기화 할 때 리스트 0번쨰 인덱스로도 초기화 한다고 하셨는데 뭐가 문제인건가요?
답변 1
0
안녕하세요^^
min값을 리스트의 0번 인덱스 값으로 초기화 할 때는 최솟값을 리스트의 자료값들 중에서 찾을때 입니다.
대표값 문제는 score 리스트에 있는 값들 중에서 최솟값을 찾는게 아니라 평균과 리스트값의 차들 중에서 찾는 것이기 때문에 0번 인덱스의 값으로 초기화하면 답이 안나올 수 있습니다.
하지만 위에 코드의 진짜 문제는 v값이 2일 때
elif value == min:
if v > tmp_score:위에 조건이 value=1, min =1 로 위조건이 참이 되어 if v > tmp_score: 조건을 실행할 때 tmp_score값이 없는 값으로 존재하기 때문에 에러가 나는 것입니다. 그래서
import sys
sys.stdin = open('input.txt', 'rt')
N = int(input())
score = list(map(int, input().split()))
ave = int((sum(score) / N) + 0.5)
min = score[0]
tmp_score = 0 #값을 초기화만 해줘도 5번 인풋 답은 나올겁니다.
for i,v in enumerate(score):
value = abs(v - ave)
#print(value)
if value < min:
min = value
idx = i
tmp_score = v
elif value == min:
if v > tmp_score:
min = value
idx = i
tmp_score = v
print(ave, idx + 1)
min값을 2147000000 처럼 큰 값으로 하면 왜 아무 문제없이 나오는지도 연구해보세요.
기존에 윈도우 10으로 잘 써왔는데 윈도우 11로 바꾸고 나서 채점이 안됩니다.
1
104
2
스택에서 ')'을 만나는 경우
0
110
3
문제가 어디있나요?
0
86
2
변수 or 함수명
0
80
1
침몰하는 타이타닉 문제 질문입니다
0
71
1
AA.py 책점 에러
0
64
1
오늘 구매했는데 파이썬 자료구조 궁금한거 있으면 답변이 잘 될까요.
0
115
2
5.동전분배하기 문제 밑에코드도 정답이될까요?
0
118
1
아나그램 비교 코드
0
124
2
AA.PY파일 복사 후 채점 진행할때 오류 발생합니다.
0
163
2
문제 링크가있나여?
0
155
2
채점기 Time Limit Exceeded 오류 문의
1
181
2
동적계획법은 사용하는 문제
0
135
2
제 코드 좀 봐주세요
0
154
1
예외가 존재할 가능성?
0
100
1
3번이 안풀립니다
0
98
0
5번 틀림
0
125
0
오류원인?
0
104
0
리스트 선언
0
116
1
침몰하는 타이타닉(그리디) 문제 질문
0
114
1
알고리즘
0
74
1
코딩테스트
0
98
1
DFS 순서 질문드립니다.
0
138
2
left, right를 사용한 풀이법에 대한 질문입니다
0
101
1





