K번째 수

📄 문제

N개의 숫자로 이루어진 숫자열이 주어지면

해당 숫자열중에서 s번째부터 e번째 까지의 수를

오름차순 정렬했을 때 k번째로 나타나는

숫자를 출력하는 프로그램을 작성하세요.

 

▣ 입력설명

첫 번째 줄에 테스트 케이스 T(1<=T<=10)이 주어집니다.

각 케이스별 첫 번째 줄은 자연수 N(5<=N<=500), s, e, k가 차례로 주어진다.

두 번째 줄에 N개의 숫자가 차례로 주어진다.

 

▣ 출력설명

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

 

▣ 입력예제

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

🧞 풀이

더보기

풀이

'''
[자료구조와 알고리즘 입문]

K번째 수

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

# 입력: 첫 째줄 t = test case
# 입력: 각 케이스별 첫 째줄 자연수 n, s, e, k
# 입력: 각 케이스별 둘 째줄 n개의 숫자가 주어짐

# 출력: 각 케이스별 k번째 수 출력

# t = 테스트 케이스
# n = n개 숫자
# s = 시작 순서 번째
# e = 끝 순서 번째
# k = 출력 순서 번째

t = int(input())

for i in range(t):
    n, s, e, k = map(int, input().split())
    n_list = input().split()
    a_list = []
    for j in range(s-1, e):
        a_list.append(int(n_list[j]))
    a_list.sort()
    print(f'#{i+1} {a_list[k-1]}')

 

다른 사람 풀이

# K번째 수

# 케이스 갯수 읽기
T=int(input())

# 케이스 갯수만큼 for문 돌리기
for t in range(T):
    n, s, e, k = map(int, input().split())
    a = list(map(int, input().split()))
    a = a[s-1:e]
    a.sort() # 오름차순 정렬
    print("#%d %d" %(t+1, a[k-1]))

K번째 약수

📄 문제

어떤 자연수 p와 q가 있을 때, 만일 p를 q로 나누었을 때 나머지가 0이면 q는 p의 약수이다.

6을 예로 들면

6 ÷ 1 = 6 … 0

6 ÷ 2 = 3 … 0

6 ÷ 3 = 2 … 0

6 ÷ 4 = 1 … 2

6 ÷ 5 = 1 … 1

6 ÷ 6 = 1 … 0

그래서 6의 약수는 1, 2, 3, 6, 총 네 개이다.

두 개의 자연수 N과 K가 주어졌을 때, N의 약수들 중 K번째로 작은 수를 출력하는 프로그램을 작성하시오.

 

▣ 입력설명

첫째 줄에 N과 K가 빈칸을 사이에 두고 주어진다.

N은 1 이상 10,000 이하이다. K는 1 이상 N 이하이다.

 

▣ 출력설명

첫째 줄에 N의 약수들 중 K번째로 작은 수를 출력한다.

만일 N의 약수의 개수가 K개보다 적어서 K번째 약수가 존재하지 않을 경우에는 -1을 출력하시오.

 

▣ 입력예제

1 6 3

 

▣ 출력예제

1 3

 

🧞 풀이

더보기
'''
[자료구조와 알고리즘 입문]

K번째 약수
어떤 자연수 p와 q가 있을 때,
만일 p를 q로 나누었을 때 나머지가 0이면 q는 p의 약수이다.

6을 예로 들면
6 ÷ 1 = 6 … 0
6 ÷ 2 = 3 … 0
6 ÷ 3 = 2 … 0
6 ÷ 4 = 1 … 2
6 ÷ 5 = 1 … 1
6 ÷ 6 = 1 … 0

그래서 6의 약수는 1, 2, 3, 6, 총 네 개이다.
두 개의 자연수 N과 K가 주어졌을 때,
N의 약수들 중 K번째로 작은 수를 출력하는 프로그램을 작성하시오.
'''

n, k = map(int, input().split())        # n, k 각각 정수 할당
d_list = []                             # 약수를 담기 위한 빈 리스트 할당

for i in range(1, n+1):                 # 1부터 n까지 반복
    if n % i == 0:                      # i로 n이 나눴을 때, 나머지가 0이면
        d_list.append(int(n // i))      # i로 n을 나눈 몫을 d_list에 추가

d_list.sort()                           # 약수 리스트 d_list 오름차순 정렬

if len(d_list) >= k:                    # d_list의 약수 갯수가 k보다 많거나 같을 때,
    print(d_list[k-1])                  # d_list의 k-1번째 인덱스의 값 출력
else:
    print(-1)                           # 그렇지 않을 때는 -1 출력

Node.js

  • VS(자바스크립트 엔진)으로 빌드 된 이벤트 기반 자바스크립트 런타임 플랫폼
  • 확장성 있는 네트워크 애플리케이션 (특히 서버 사이드) 개발에 사용되는 소프트웨어 플랫폼
  • 자바스크립트를 활용하며 Non-Blocking I/O와 단일 스레드 이벤트 루프를 통한 높은 성능으로 처리 가능

1. Node.js 공식 홈페이지 접속 (nodejs.org/ko)

16.15.1 LTS 눌러서 설치

다운로드 옆에 Windows로 되어 있는지 확인할 것 (운영체제 x64 역시 확인)

LTS, 현재 버전 둘 중에 하나 설치하면 되는데,

입문자 입장에서 안정성과 신뢰도가 높은 LTS 설치 및 사용을 권장


2. node-v~ 파일 다운로드 및 실행

node-v16.15.1-x64 실행


3. 윈도우 창에 cmd 입력 → 콘솔창 실행 → node 입력 (설치 여부 및 버전 확인)

cmd 입력하여 콘솔창 실행 &rarr; node 입력 &rarr; 해당 값이 나오면 정상적으로 설치된 것

 

+ Recent posts