Algorithm/파이썬 알고리즘 문제풀이 강의
[코드 구현력 기르기] 2. K번째 수
이숨인
2023. 3. 8. 17:49
1. 문제

2. 내 코드
import sys
sys.stdin=open("input.txt","rt")
#N,K=map(int,input().split())
T=int(input())
for x in range(T): # case1부터 시작
N,s,e,k=map(int,input().split())
lst=list(map(int,input().split())) //한 줄 띄어쓰기로 들어온 것이 int화되고 list화 된다
#lst=list(input().split()) //틀린코드 -> map함수 사용 x
obj_list=lst[s-1:e-1] // 틀린코드 -> [s-1:e]로 수정 = s번째부터, e번째까지를 의미
obj_list.sort
for y in obj_list: //틀린코드 -> for문 생각할 필요가 없었다.. 그냥 k-1을 인덱스로 print하면 됐는데..
if y == obj_list[k]:
print("#",x+1,end=' ')
print (y)
break
3. 정답
import sys
sys.stdin=open("input.txt","rt")
T=int(input())
for t in range(T): # case1부터 시작
N,s,e,k=map(int,input().split())
lst=list(map(int,input().split()))
obj_list=lst[s-1:e]
obj_list.sort()
print("#%d %d" %(t+1,obj_list[k-1]))
4. 반성점
- map함수를 못써먹은 구간이 있었다.
- 리스트 슬라이스의 개념을 잘 몰랐다.
- 쉽게 생각하면 되는 부분을, 지레 겁먹고 복잡하게 for문으로 생각했다.
5. 배운점
<잘못한점>
- 리스트 슬라이스의 개념을 잘 몰랐다.
인덱스에서 s-1은 잘 했지만, 리스트 슬라이스의 경우, 뒤에 오는 숫자-1의 인덱스까지를 의미하므로, e-1가 아니라 2가 맞다!
- map함수를 못써먹은 구간이 있었다.
- 리스트 슬라이스 기능
s와 e는 번째이지, 리스트의 인덱스에서는 1만큼 감소한다.
6. 추가적으로 공부할 개념
- 파이썬인데 저렇게 출력하는 방식은 C언어 어닌가?? 왜 저렇게 출력했는지, %d이런거 알아봐야 겠다.