playXP

서브 메뉴

Page. 1 / 12505 [내 메뉴에 추가]
글쓰기
작성자 아이콘 marine12
작성일 2020-05-13 17:15:42 KST 조회 485
제목
파이썬 중앙값 찾기 출력 에러...

import heapq

class Median_Finder:

    

    def __init__(self):

        #initialize data structure

        self.max_heap = []

        self.min_heap = []

        

 

    def add_Number(self, num):

        #type num: int, rtype: void

        if not self.max_heap and not self.min_heap:

            heapq.heappush(self.min_heap, num)

            return 

        if not self.max_heap:

            if num > self.min_heap[0]:

                heapq.heappush(self.max_heap, -heapq.heappop(self.min_heap))

                heapq.heappush(self.min_heap, num)

            else:

                heapq.heappush(self.max_heap, -num)

            return

        if len(self.max_heap) == len(self.min_heap):

            if num < -self.max_heap[0]:

                heapq.heappush(self.max_heap, -num)

            else:

                heapq.heappush(self.min_heap, num)

        elif len(self.max_heap) > len(self.min_heap):

            if num < -self.max_heap[0]:

                heapq.heappush(self.min_heap, -heapq.heappop(self.max_heap))

                heapq.heappush(self.max_heap, -num)

            else:

                heapq.heappush(self.min_heap, num)

        else:

            if num > self.min_heap[0]:

                heapq.heappush(self.max_heap, -heapq.heappop(self.min_heap))

                heapq.heappush(self.min_heap, num)

            else:

                heapq.heappush(self.max_heap, -num)

        

 

    def find_Median(self):

        #rtype: float

        if len(self.max_heap) == len(self.min_heap):

            return (-self.max_heap[0] + self.min_heap[0]) / 2

        elif len(self.max_heap) > len(self.min_heap):

            return -self.max_heap[0]

        else:

            return self.min_heap[0] 

 

S = Median_Finder()

n= int(input().split())

A=[]

A.append(n)

for i in A:

s=int(input())

S.add_Number(i)

result = S.find_Median()

i+=1

print (result)

이 밑에 부분에서 막혔는데 제가 원하는 건 1,2,3,4,5 넣으면 1중앙값인 1, 12 중앙값인 1.5 123중앙값인 2 이런 식으로 다 나온 걸 더하는 건데 이 밑부분에서 막히네요... 출력을 어떻게 짜야 할까요? 간단한 거 같은데 아우

 

지속적인 허위 신고시 신고자가 제재를 받을 수 있습니다.
신고 사유를 입력하십시오:

아이콘 NidasXPn (2020-05-13 18:13:03 KST)
0↑ ↓0
센스 이미지를 등록해 주세요
S = Median_Finder()

n= (input().split(','))

A = [int(i) for i in n]

for i in A:
s=int(input())

S.add_Number(i)

print(S.find_Median())

i+= 1

일단 int(input.split())은 리스트를 인트로 바꾸려고 하는 거라 에러 나고

그 다음에 split 하면 안에 스트링 나오니까 나중에 에러 뜹니다.

그리고 S.find_Median 보니까 그냥 리턴 하고 딱히 뜨는 거 없어서 4줄로 줄일려고 저렇게 했습니다.
댓글을 등록하려면 로그인 하셔야 합니다. 로그인 하시려면 [여기]를 클릭하십시오.
롤토체스 TFT - 롤체지지 LoLCHESS.GG
소환사의 협곡부터 칼바람, 우르프까지 - 포로지지 PORO.GG
배그 전적검색은 닥지지(DAK.GG)에서 가능합니다
  • (주)플레이엑스피
  • 대표: 윤석재
  • 사업자등록번호: 406-86-00726

© PlayXP Inc. All Rights Reserved.