[프로그래머스] k번째 수, 완주하지 못한 선수
1. k번째 수
배열 array의 i번째 숫자부터 j번째 숫자까지 자르고 정렬했을 때, k번째에 있는 수를 구하려 합니다. 배열 array, [i, j, k]를 원소로 가진 2차원 배열 commands가 매개변수로 주어질 때, commands의 모든 원소에 대해 앞서 설명한 연산을 적용했을 때 나온 결과를 배열에 담아 return 하도록 solution 함수를 작성해주세요.
def solution(array, commands):
answer = []
for li in commands:
i = li[0]
j = li[1]
k = li[2]
a = sorted(array[i-1:j])
answer.append(a[k-1])
return answer
- 정렬함수 sorted() sort랑 다름 (sort는 원본값 변함!)
- 리스트 슬라이싱 점프투파이썬
인덱스 0부터 시작이라 [i-1:j] 해줘야함. - 리스트에 요소 추가 append(x) : 리스트 맨마지막에 x 추가함수
2. 완주하지 못한 선수
집합
- 집합 자료형 만들기
집합(set)은 파이썬 2.3부터 지원하기 시작한 자료형으로, 집합에 관련된 것을 쉽게 처리하기 위해 만든 자료형이다. - 집합 자료형의 특징
-중복을 허용하지 않는다.
-순서가 없다(Unordered).
-> 만약 set 자료형에 저장된 값을 인덱싱으로 접근하려면 다음과 같이 리스트나 튜플로 변환한후 해야 한다. - set 자료형을 정말 유용하게 사용하는 경우는 교집합, 합집합, 차집합을 구할 때이다.
& : 교집합
| : 합집합
- : 차집합
반복문 (for in)
- iterable은 member를 하나씩 반환할 수 있는 object를 말합니다.
- 앞서 다룬 타입 중 list, dictionary, set, string, tuple, bytes가 iterable한 타입입니다.
for item in iterable:
... 반복할 구문... - range도 iterable 합니다
- range는 range(시작숫자, 종료숫자, step)의 형태로 리스트 슬라이싱과 유사합니다.
- range의 결과는 시작숫자부터 종료숫자 바로 앞 숫자까지 컬렉션을 만듭니다.
range(5)
for i in range(5):
... print(i)
...
0
1
2
3
4
def solution(participant, completion):
#동명이인 아닐때
doc = list(set(participant)-set(completion))
if len(doc) != 0:
return doc[0]
#동명이인 일때
p = sorted(participant)
c = sorted(completion)
for i in range(len(p)):
if p[i] != c[i]:
return p[i]
answer = ''
return answer
아래는 잘 푼 사람들 코드
- 데이터의 개수를 셀 때 유용한 파이썬의 collections 모듈의 Counter 클래스
Author And Source
이 문제에 관하여([프로그래머스] k번째 수, 완주하지 못한 선수), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@choi46910/21-09-12-프로그래머스저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)