[algorithms]k번째 수

Hyeseong·2022년 2월 14일
0

algorithms

목록 보기
2/5

"""
N개의 숫자로 이루어진 숫자열이 주어지면 해당 숫자열중에서 s번째부터 e번째 까지의 수를 오름 차순 정렬했을 때 k번째로 나타나는 숫자를 출력하는 프로그램을 작성하세요.

  • 입력 설명
    1.1 첫 번째 줄에 테스트 케이스 T(1<=T<=10)이 주어집니다.

    각 케이스별
    1.2 첫 번쨰 줄은 자연수 N(5<=N<=500), s, e, k가 차례로 주어진다.
    1.3 두 번쨰 줄에 N개의 숫자가 차례로 주어진다.

  • 출력 설명
    2.1 각 케이스별 k번째 수를 아래 출력예제와 같이 출력하세요.

  • 입력 예제(k번째.txt)
    2
    6 2 5 3
    5 2 7 3 8 9
    15 3 10 3
    4 15 8 16 6 6 17 3 10 11 18 7 14 7 15

  • 출력 예제
    # 1 7
    # 2 6

    입력예제1 해설: 2 7 3 8의 숫자 중 3번째로 작은 수는 7이다.
    """

import sys
sys.stdin=open("k번째.txt", 'rt')

T = int(input())     # T의 값에 2?
print('T:',T)
for t in range(T):
    n, s, e, k = map(int, input().split())
    print(f"n, s, e, k: {n}, {s}, {e}, {k}")
    a = list(map(int, input().split())) # 여기서 나온
    print(f"a: {a}")
    a = a[s-1:e]
    print(f"a 리스트의 s번째부터 e까지: {a}")
    a.sort()
    print(f"sorting된 a 리스트: {a}" )
    print("#%d %d" %(t+1, a[k-1]))
2
6 2 5 3
5 2 7 3 8 9
15 3 10 3
4 15 8 16 6 6 17 3 10 11 18 7 14 7 15
T: 2
n, s, e, k: 6, 2, 5, 3
a: [5, 2, 7, 3, 8, 9]
a 리스트의 s번째부터 e까지: [2, 7, 3, 8]
sorting된 a 리스트: [2, 3, 7, 8]
#1 7
n, s, e, k: 15, 3, 10, 3
a: [4, 15, 8, 16, 6, 6, 17, 3, 10, 11, 18, 7, 14, 7, 15]
a 리스트의 s번째부터 e까지: [8, 16, 6, 6, 17, 3, 10, 11]
sorting된 a 리스트: [3, 6, 6, 8, 10, 11, 16, 17]
#2 6



오후 1:32 바보 야매 뉴비 개발새발 입력의 예제 아닌가요
오후 1:32 바보 야매 뉴비 개발새발 걍 랜덤이자나요
오후 1:33 바보 야매 뉴비 개발새발 아닌가 문제가 이해가 안되네;;
오후 1:34 장돌이 아! 그런거조?!
오후 1:35 바보 야매 뉴비 개발새발 아 문제 이해 자체가 되게 어렵네용.
 
숫자 리스트 들어오면 s,e 두개 인덱스 잘라내서 오름차순 정렬하고 거기서 k 번째 출력하라는 문제 인데요?
오후 1:35 장돌이 감사합니다!
오후 1:36 장돌이 그럼 5 2 7 3 8 9값이 0 0 0 0 0 0 이렇게 되도 상관 없는거조? 랜덤이면?
오후 1:36 바보 야매 뉴비 개발새발 입력예제야 어떻게 넣어도 돌아는 가야죠
오후 1:36 장돌이 넵!
오후 1:36 바보 야매 뉴비 개발새발 k번째.txt 라는 파일안에 저렇게 숫자들이 써있으면
오후 1:37 장돌이 2
6 2 5 3
5 2 7 3 8 9
15 3 10 3
4 15 8 16 6 6 17 3 10 11 18 7 14 7 15
오후 1:37 바보 야매 뉴비 개발새발 그거 라인 바이 라인으로 읽어서 처리하는거 아니에요?
오후 1:37 장돌이 이렇게 들어 있어요
오후 1:37 장돌이 네!
오후 1:37 장돌이 인프런 강의 7만7천원 사서 듣고 있는데 이렇게 강사님이 알려주셔서 파일 작성해서 풀고 있어요.
오후 1:37 바보 야매 뉴비 개발새발 설마 라인바이가 아니고 전체파일에서 몇번째 열을 말하는건가
오후 1:38 장돌이 그럼 15 3 10 3은
오후 1:38 장돌이 6 2 5 3이랑 비슷한 거조?
오후 1:38 바보 야매 뉴비 개발새발 문제를 이해하기엔 설명이 너무 부실해서 이해가 안되네요 ;;;
오후 1:39 바보 야매 뉴비 개발새발 역으로 코드를 봐야 무슨 문제였는지 알거 같은..
오후 1:39 바보 야매 뉴비 개발새발 첫번쨰 줄에 테스트 케이스 t가 주어진다는데
오후 1:39 바보 야매 뉴비 개발새발 1<=t<=10이면
오후 1:40 바보 야매 뉴비 개발새발 문제가 이해가 안가요;;; 문제만 이해가면 어려울거도 아닌데..
오후 1:40 바보 야매 뉴비 개발새발 파일읽는거 보면 T가 파일라인이네여
오후 1:40 장돌이 아닌것 같은데욤?
오후 1:41 장돌이 파일 첫째줄 같은디...
오후 1:41 장돌이 찍어보니깐 2나와요
오후 1:41 바보 야매 뉴비 개발새발 네 글켔죠
오후 1:41 바보 야매 뉴비 개발새발 파일 전체를 줄바꿈으로 split 쳐서 for문 돌린거니까 첨엔 2나오고
오후 1:41 바보 야매 뉴비 개발새발 그 다음 에 6 2 5 3 나오는거 아니에요?
오후 1:42 장돌이 네
오후 1:43 바보 야매 뉴비 개발새발 저 소스코드만 보면
오후 1:43 바보 야매 뉴비 개발새발 파일안에 를 라인단위로 읽어서
오후 1:44 바보 야매 뉴비 개발새발 s-1:e 로 슬라이스 한걸 a에 넣고
오후 1:44 바보 야매 뉴비 개발새발 a를 정렬하네용

결론 :
1. 문제 설명이 그렇게 친절하지 않거나 이상한 느낌이 공통적으로 듬.
2. 그럼에도 불구하고 가장 난관이 었던 부분이 5 2 7 3 8 9 수가 나열된 부분인데 이 부분은 앞 줄 6 2 5 3에서 첫 뻔째 수 6을 근거로 6개의 수, 5 2 7 3 8 9가 나열된 것으로 유추하였고 야매님이 말한바와 나도 공감하는 5 2 7 3 8 9가 나타난 것은 랜덤으로 도출된것으로 파악되었음.

그럼 s번째부터 e번째까지 가져갈텐데.(인덱스로 가져갈려면 s-1로 가져가야하는데)
s == 2, e == 5면 5 2 7 3 8 9를 sorting하고 가져가는건..

모르겠다..

profile
어제보다 오늘 그리고 오늘 보다 내일...

0개의 댓글

관련 채용 정보