본문 바로가기

카테고리 없음

파이썬 - 슬라이스, 정렬

 

슬라이스(Slicing)

- 슬라이스를 사용하면 리스트, 튜플, 문자열 등의 시퀀스 데이터 타입에서 원하는 부분을 추출할 수 있습니다. 기본 형식은 'sequence[start: stop : stop]' 입니다.

 

  • start : 슬라이스 시작 인덱스 (포함)
  • stop : 슬라이스 종료 인덱스(제외)
  • step : 슬라이스 간격(옵션)
# 리스트 예제
numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

# 2번 인덱스부터 5번 인덱스까지 슬라이스
print(numbers[2:6])  # [2, 3, 4, 5]

# 처음부터 5번 인덱스까지 슬라이스
print(numbers[:6])  # [0, 1, 2, 3, 4, 5]

# 5번 인덱스부터 끝까지 슬라이스
print(numbers[5:])  # [5, 6, 7, 8, 9]

# 전체 리스트를 슬라이스
print(numbers[:])  # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

# 스텝을 이용한 슬라이스 (2칸씩 건너뛰기)
print(numbers[::2])  # [0, 2, 4, 6, 8]

# 역순으로 슬라이스
print(numbers[::-1])  # [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]

 

정렬(Sorting)

 

sort() 메서드: 리스트 자체를 정렬합니다. 이 메서드는 리스트를 직접 수정하며, 반환값은 None입니다.

numbers = [3, 1, 4, 1, 5, 9, 2, 6, 5]
numbers.sort()
print(numbers)  # [1, 1, 2, 3, 4, 5, 5, 6, 9]

# 내림차순 정렬
numbers.sort(reverse=True)
print(numbers)  # [9, 6, 5, 5, 4, 3, 2, 1, 1]

 

 

sorted() 함수: 새로운 정렬된 리스트를 반환합니다. 원래 리스트는 수정되지 않습니다.

numbers = [3, 1, 4, 1, 5, 9, 2, 6, 5]
sorted_numbers = sorted(numbers)
print(sorted_numbers)  # [1, 1, 2, 3, 4, 5, 5, 6, 9]
print(numbers)  # [3, 1, 4, 1, 5, 9, 2, 6, 5]

# 내림차순 정렬
sorted_numbers_desc = sorted(numbers, reverse=True)
print(sorted_numbers_desc)  # [9, 6, 5, 5, 4, 3, 2, 1, 1]

 

정렬 기준을 지정하기: key 매개변수를 사용하여 정렬 기준을 지정할 수 있습니다.

# 문자열 리스트를 길이를 기준으로 정렬
words = ["apple", "banana", "cherry", "date"]
words.sort(key=len)
print(words)  # ['date', 'apple', 'banana', 'cherry']

# 대소문자 구분 없이 정렬
words = ["banana", "Apple", "cherry", "Date"]
words_sorted = sorted(words, key=str.lower)
print(words_sorted)  # ['Apple', 'banana', 'cherry', 'Date']

 

K번째 수

https://school.programmers.co.kr/learn/courses/30/lessons/42748?language=python3

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

내가 푼 문제풀이

array = [1, 5, 2, 6, 3, 7, 4]
commands = [[2, 5, 3], [4, 4, 1], [1, 7, 3]]

def solution(array, commands):
    answer = []
    for x in commands:
        i, j, k = x
        slice_sorted_array = sorted(array[i-1 : j])
        
        answer.append(slice_sorted_array[k-1])
        
    return answer


print(solution(array, commands))