티스토리 뷰

728x90
반응형

문제

어떤 수열을 읽고, 홀수번째 수를 읽을 때 마다, 지금까지 입력받은 값의 중앙값을 출력하는 프로그램을 작성하시오.

예를 들어, 수열이 1,5,4,3,2 이면, 홀수번째 수는 1번째 수, 3번째 수, 5번째 수이고, 1번째 수를 읽었을 때 중앙값은 1, 3번째 수를 읽었을 때는 4, 5번째 수를 읽었을 때는 3이다.

입력

첫째 줄에 테스트 케이스의 개수 T(1<=T<=1,000)가 주어진다. 각 테스트 케이스의 첫째 줄에는 수열의 크기 M(1<=M<=9999, M=홀수)이 주어지고, 그 다음 줄부터 이 수열의 원소가 차례대로 주어진다. 원소는 한 줄에 10개씩 나누어져있고, 32비트 부호있는 정수이다. (대부분의 언어에서 int)

출력

예제

입력1

3
9
1 2 3 4 5 6 7 8 9
9
9 8 7 6 5 4 3 2 1
23
23 41 13 22 -3 24 -31 -11 -8 -7
3 5 103 211 -311 -45 -67 -73 -81 -99
-33 24 56

출력1

5
1 2 3 4 5
5
9 8 7 6 5
12
23 23 22 22 13 3 5 5 3 -3
-7 -3

코드

from sys import stdin
from typing import List


class Solution:
    def centerValue(self, M: int, data: List[int]):

        answers = []
        for right in range(1, M + 1, 2):
            suffix = data[:right]
            suffix.sort()
            answers.append(suffix[right // 2])

        if len(answers) <= 10:
            print(len(answers)) 
            print(*answers)
        else:
            print(len(answers))
            linedAnswers = []
            tmp = []
            for answer in answers:
                if len(tmp) == 10:
                    linedAnswers.append(tmp)
                    tmp = []
                tmp.append(answer)
            linedAnswers.append(tmp)
            for linedAnswer in linedAnswers:
                print(*linedAnswer)

        return


for _ in range(int(stdin.readline())):
    M = int(stdin.readline())

    if M <= 10:
        Solution().centerValue(M, list(map(int, stdin.readline().split())))
    else:
        data = []
        a = M // 10
        b = M % 10
        if b == 0:
            for i in range(a):
                data.extend(list(map(int, stdin.readline().split())))
            Solution().centerValue(M, data)
        else:
            for i in range(a+1):
                data.extend(map(int, stdin.readline().split()))
            Solution().centerValue(M, data) 
728x90
반응형
댓글
반응형
250x250
글 보관함
최근에 달린 댓글
«   2024/04   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
Total
Today
Yesterday
링크