[알고리즘] 1-2 K번째 수

이성혁·2021년 4월 20일
1

알고리즘

목록 보기
2/12
post-thumbnail

🥉 K번째 수

문제

N개의 숫자로 이루어진 숫자열이 주어지고 오름 차순 정렬했을 때 k번째로 나타나는 숫자를 출력하는 프로그램 작성

📌 문제분석

  • 입력예제를 통하여 문제를 살펴보면 2가지 테스트 케이스가 주어지고 6개의 숫자가 입력된다.
    입력된 숫자들 중에서 2 ~ 5번째 사이의 숫자들을 오름차순으로 정렬하였을 때 3번째 숫자를 출력하면 되는 것이다.
  • 1번째 케이스 5 2 7 3 8 9에서 2 ~ 5번째 사이의 숫자들 2 7 3 8을 오름차순 정렬하면 2 3 7 8이다. 여기서 3번째인 7을 출력하면 된다.
문제출처 : https://www.inflearn.com/course/%ED%8C%8C%EC%9D%B4%EC%8D%AC-%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98-%EB%AC%B8%EC%A0%9C%ED%92%80%EC%9D%B4-%EC%BD%94%EB%94%A9%ED%85%8C%EC%8A%A4%ED%8A%B8

🔑 KeyPoint!

문제해결을 위해서 파이썬 내장 함수인 sort를 사용하여 문제를 해결할 것이다. 파이썬 내장 함수는 외부 모듈과 달리 import가 필요하지 않기 때문에 아무런 설정 없이 바로 사용할 수 있다. 우리가 흔하게 사용하는 print도 파이썬의 내장 함수이다. 이처럼 파이썬의 내장 함수를 이용하여 문제를 해결하는 것이 더 효율적이라 생각한다.

🔌 Code

# 케이스 개수
T = int(input())

for t in range(T):
    n, s, e, k = map(int, input().split())
    a = list(map(int, input().split()))

    # CASE 1
    a = sorted(a[s-1:e])
    print("#%d %d" % ((t+1), a[k-1]))

    # CASE 2
    #a = a[s-1:e]
    # a.sort()
    # print("#%d %d" % ((t+1), a[k-1]))

https://github.com/seonghyeoklee/Algorithm-Python

📃 내용정리

  • sort / sorted

    • sort 함수는 리스트 객체 그 자체를 정렬만 할 뿐 정렬된 결과를 돌려주지는 않는다.
    • sorted 함수는 입력값을 정렬한 후 그 결과를 리스트로 돌려주는 함수이다.
    • CASE 1과 CASE 2의 결과는 같다. 두가지 케이스 모두 사용법이 어렵지 않으며 정렬된 결과가 필요하다면 sorted 함수를 사용하면 된다.
    • 참고 : 점프 투 파이썬 내장함수(sorted)
  • %d 이용하여 문자열 출력하기

print("%d %d" % (1, 2))
1 2
profile
항상 배우는 자세로 🪴

0개의 댓글