[프로그래머스 Python] 코딩 기초 트레이닝 Day 12 - 리스트(배열)
1. 리스트 자르기
정수 n과 정수 3개가 담긴 리스트 slicer 그리고 정수 여러 개가 담긴 리스트 num_list가 주어집니다. slicer에 담긴 정수를 차례대로 a, b, c라고 할 때, n에 따라 다음과 같이 num_list를 슬라이싱 하려고 합니다.
- n = 1 : num_list의 0번 인덱스부터 b번 인덱스까지
- n = 2 : num_list의 a번 인덱스부터 마지막 인덱스까지
- n = 3 : num_list의 a번 인덱스부터 b번 인덱스까지
- n = 4 : num_list의 a번 인덱스부터 b번 인덱스까지 c 간격으로
올바르게 슬라이싱한 리스트를 return하도록 solution 함수를 완성해주세요.
제한사항
- n 은 1, 2, 3, 4 중 하나입니다.
- slicer의 길이 = 3
- slicer에 담긴 정수를 차례대로 a, b, c라고 할 때
- 0 ≤ a ≤ b ≤ num_list의 길이 - 1
- 1 ≤ c ≤ 3
- 5 ≤ num_list의 길이 ≤ 30
- 0 ≤ num_list의 원소 ≤ 100
코드 작성
def solution(n, slicer, num_list):
a, b, c = slicer[0], slicer[1], slicer[2]
if n == 1:
return num_list[:b+1]
elif n == 2:
return num_list[a:]
elif n == 3:
return num_list[a:b+1]
return num_list[a:b+1][::c]
2. 첫 번째로 나오는 음수
정수 리스트 num_list가 주어질 때, 첫 번째로 나오는 음수의 인덱스를 return하도록 solution 함수를 완성해주세요. 음수가 없다면 -1을 return합니다.
제한사항
- 5 ≤ num_list의 길이 ≤ 100
- -10 ≤ num_list의 원소 ≤ 100
코드 작성
def solution(num_list):
# 음수가 존재하는 경우
for i, n in enumerate(num_list):
if n < 0:
return i
# 음수가 존재하지 않다면 -1 값이 리턴
return -1
3. 배열 만들기 3
정수 배열 arr와 2개의 구간이 담긴 배열 intervals가 주어집니다. intervals는 항상 [[a1, b1], [a2, b2]]의 꼴로 주어지며 각 구간은 닫힌 구간입니다. 닫힌 구간은 양 끝값과 그 사이의 값을 모두 포함하는 구간을 의미합니다. 이때 배열 arr의 첫 번째 구간에 해당하는 배열과 두 번째 구간에 해당하는 배열을 앞뒤로 붙여 새로운 배열을 만들어 return 하는 solution 함수를 완성해 주세요.
제한사항
- 1 ≤ arr의 길이 ≤ 100,000
- 1 ≤ arr의 원소 < 100
- 1 ≤ a1 ≤ b1 < arr의 길이
- 1 ≤ a2 ≤ b2 < arr의 길이
코드 작성
def solution(arr, intervals):
l = []
for i in intervals:
l.extend(arr[i[0]:i[1]+1])
return l
4. 2의 영역
정수 배열 arr가 주어집니다. 배열 안의 2가 모두 포함된 가장 작은 연속된 부분 배열을 return 하는 solution 함수를 완성해 주세요.
단, arr에 2가 없는 경우 [-1]을 return 합니다.
제한사항
- 1 ≤ arr의 길이 ≤ 100,000
- 1 ≤ arr의 원소 ≤ 10
코드 작성
def solution(arr):
# 2가 존재하지 않는 경우
if 2 not in arr:
return [-1]
# 배열의 첫 번째 요소와 마지막 요소가 2인 경우(배열 그대로를 출력)
if arr[0] == 2 and arr[-1] == 2:
return arr
# 그 외의 케이스
idx = arr.index(2)
reverse_idx = -arr[::-1].index(2)
return arr[idx:reverse_idx]
5. 배열 조각하기
정수 배열 arr와 query가 주어집니다. query를 순회하면서 다음 작업을 반복합니다.
- 짝수 인덱스에서는 arr에서 query[i]번 인덱스를 제외하고 배열의 query[i]번 인덱스 뒷부분을 잘라서 버립니다.
- 홀수 인덱스에서는 arr에서 query[i]번 인덱스는 제외하고 배열의 query[i]번 인덱스 앞부분을 잘라서 버립니다.
위 작업을 마친 후 남은 arr의 부분 배열을 return 하는 solution 함수를 완성해 주세요.
제한사항
- 5 ≤ arr의 길이 ≤ 100,000
- 0 ≤ arr의 원소 ≤ 100
- 1 ≤ query의 길이 < min(50, arr의 길이 / 2)
- query의 각 원소는 0보다 크거나 같고 남아있는 arr의 길이 보다 작습니다.
코드 작성
def solution(arr, query):
for i, q in enumerate(query):
if i % 2 == 0:
arr = arr[:q+1]
else:
arr = arr[q:]
return arr
6. 문제 출처
👩🏻💻개인 공부 기록용 블로그입니다
오류나 틀린 부분이 있을 경우 댓글 혹은 메일로 따끔하게 지적해주시면 감사하겠습니다.
댓글남기기