• 카테고리

    질문 & 답변
  • 세부 분야

    알고리즘 · 자료구조

  • 해결 여부

    미해결

비슷한 듯 새로운 풀이법

21.06.20 02:21 작성 조회수 222

0

선생님 안녕하세요! 저는 강의를 2회독 중인 학생입니다!

현재 문제만 보고 코드를 구현하고 있던 중 if (dif <= big) and (score<x)를 한번에 걸러주는 조건문을 생각해봤습니다.

어차피 tmp<=min으로 조건문을 하면

tmp ==min인 경우에 불필요하게 'big = temp'를 넣는 과정 외에는 차이가 없다고 생각했기 때문입니다.

실제로 문제에 나와있는 입력값을 넣었을 때도 같은 경우가 나왔습니다.

하지만 채점을 해보니, 테스트 케이스 1번 부터 틀렸었습니다.

제 코드에 어떤 논리적 오류가 있는지 알고 싶습니다...! 

다음은 제 코드입니다.

-----------------------------------------------------------------------------------------------------------

n = int(input())

arr = list(map(int, input().split()))

big = 217300000000

ave = int(sum(arr)/n + 0.5)

score = 0

res = 0

for idx, x in enumerate(arr):

    tmp = abs(ave-x)

    if (tmp <= big) and (score < x):

        big = tmp

        score = x

        res = idx+1

else:

    print(ave, res)

답변 1

답변을 작성해보세요.

0

김태희님의 프로필

김태희

질문자

2021.06.20

안녕하세요. 계속 제 코드를 훑어보니, 제 코드는 평균과 완전히 동일한 점수를 가진 학생을 배제해버린다는 논리적 오류를 발견했습니다!

감사합니다!