문제 : 리스트 자르기
https://school.programmers.co.kr/learn/courses/30/lessons/181897
프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
내 코드:
def solution(n, slicer, num_list):
answer = []
if n == 1:
answer = num_list[:slicer[1]+1]
elif n == 2:
answer = num_list[slicer[0]:]
elif n == 3 :
answer = num_list[slicer[0]:slicer[1]+1]
else :
answer = num_list[slicer[0]:slicer[1]+1:slicer[2]]
return answer
좋은 코드 :
def solution(n, slicer, num_list):
a, b, c = slicer
return [num_list[:b + 1], num_list[a:], num_list[a:b + 1], num_list[a:b + 1:c]][n - 1]
def solution(n, slicer, num_list):
a, b, c = slicer
b += 1
if n <= 2 :
if n == 1:
return num_list[0:b]
else:
return num_list[a:]
else:
if n == 3:
return num_list[a:b]
else:
return num_list[a:b:c]
# 쿼리(n) 종류가 많아지면 2분할 방식으로 2이하, 3이상 으로 만들어주면(2진트리)
#n:1~4까지 어떤 경우든 조건문 2번 안에 자리를 찾아 들어가게 됩니다!
문제 : 첫 번째로 나오는 음수
https://school.programmers.co.kr/learn/courses/30/lessons/181896
프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
내 코드:
def solution(num_list):
for i in range(len(num_list)):
if num_list[i] < 0:
return i
return -1
좋은 코드:
def solution(num_list):
return ([i for i in range(len(num_list)) if num_list[i] < 0] or [-1])[0]
def solution(num_list):
for i, num in enumerate(num_list):
if num < 0:
return i
return -1
문제 : 배열만들기3
https://school.programmers.co.kr/learn/courses/30/lessons/181895
프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
내 코드:
def solution(arr, intervals):
return arr[intervals[0][0]:intervals[0][1]+1] + arr[intervals[1][0]:intervals[1][1]+1]
좋은코드:
def solution(arr, intervals):
s1, e1 = intervals[0]
s2, e2 = intervals[1]
return arr[s1:e1+1] + arr[s2:e2+1]
# 리스트 간 +는 element wise하지 않음
# 예를 들어
#list1 = [1, 2, 3]
#list2 = [4, 5, 6]
#print(list1 + list2)
#출력 결과: [1, 2, 3, 4, 5, 6]
#>>> 즉, 파이썬에서 기본 리스트의 + 연산은 <Not Element-wise>
# 추가로,
# [1, 2, 3] + [4, 5, 6]을 했을 때
#1등끼리 더해서 1 + 4 = 5
#2등끼리 더해서 2 + 5 = 7
#3등끼리 더해서 3 + 6 = 9
#결과: [5, 7, 9]
#이걸 <원소별 연산>이라고 한다
def solution(arr, intervals):
answer = []
for a,b in intervals: answer+=arr[a:b+1]
return answer
문제 : 2의 영역
https://school.programmers.co.kr/learn/courses/30/lessons/181894
프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
내 코드 :
def solution(arr):
answer = []
i = j = -1
for idx, char in enumerate(arr):
if char == 2:
if i == -1 :
i = idx
else:
j = idx
if j == -1:
if i == -1 :
answer.append(-1)
return answer
else :
answer.append(2)
return answer
else:
answer = arr[i:j+1]
return answer
#1) i = j = 0 으로 했었는데 그럼 아래와 같은 조건일 때 문제가 생김
#질문: 만약 arr = [2, 1, 1] 처럼 2가 맨 첫 번째(인덱스 0)에 딱 하나만 있는 경우라면
#i와 j값은 각각 어떻게 될까요? 그리고 코드는 어떤 결과를 반환하게 될까요?
#2) 파이썬에서 반복문을 멈출 때 break
#3) 파이썬에서 뒤에서부터 반복문 돌리기
#for char in my_text[::-1]:
#(+) 인덱스까지 포함해서 돌리기
#for idx, char in enumerate(my_text[::-1]):
좋은 코드:
def solution(arr):
if 2 not in arr:
return [-1]
return arr[arr.index(2) : len(arr) - arr[::-1].index(2)]
def solution(arr):
answer = []
check=[]
if 2 not in arr:
return [-1]
else:
for i in range(0, len(arr)):
if arr[i]==2:
check.append(i)
return arr[check[0]:check[-1]+1]
문제 : 배열 조각하기
https://school.programmers.co.kr/learn/courses/30/lessons/181893
프로그래머스
SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
내 코드:
def solution(arr, query):
answer = arr
for idx, char in enumerate(query):
if idx%2 == 0:
answer = answer[:char+1]
else:
answer = answer[char:]
return answer
좋은 코드:
#for문 내부의 슬라이싱은 메모리 측면에서 좋지 않습니다.
def solution(arr, query):
# 실제 잘라낼 범위를 가리킬 포인터 변수 초기화
start = 0
end = len(arr) # 슬라이싱 끝 범위를 고려해 len(arr)로 시작
for k, q in enumerate(query):
if k % 2 == 0:
end = start + q + 1
else:
start = start + q
# 반복문이 다 끝난 후, 최종적으로 '딱 한 번만' 슬라이싱해서 반환합니다.
return arr[start:end]'카테부 4기 판교 ai 실무 > 코테 공부' 카테고리의 다른 글
| 프로그래머스 코딩 기초 트레이닝 Day14 (0) | 2026.06.07 |
|---|---|
| 프로그래머스 코딩 기초 트레이닝 Day13 (0) | 2026.06.06 |
| 프로그래머스 코딩 기초 트레이닝 Day11 (0) | 2026.06.04 |
| 프로그래머스 코딩 기초 트레이닝 Day10 (0) | 2026.05.29 |
| 프로그래머스 코딩 기초 트레이닝 Day9 (0) | 2026.05.28 |