아무 원소도 들어있지 않은 빈 배열 X가 있습니다. 길이가 같은 정수 배열 arr과 boolean 배열 flag가 매개변수로 주어질 때, flag를 차례대로 순회하며 flag[i]가 true라면 X의 뒤에 arr[i]를 arr[i] × 2 번 추가하고, flag[i]가 false라면 X에서 마지막 arr[i]개의 원소를 제거한 뒤 X를 return 하는 solution 함수를 작성해 주세요.
code - 1차
def solution(arr, flag):
result = []
for i in range(len(arr)):
if flag[i]:
result += [arr[i]]*2*arr[i]
else:
result = result[:-arr[i]]
return result
code - 2차
def solution(arr, flag):
x = []
for idx, f in enumerate(flag):
if f:
x.extend([arr[idx]] * 2 * arr[idx])
else:
del x[-arr[idx]:]
return x
- x 리스트에 대해 반복적으로 += 확장하고, 슬라이싱을 수행하는 대신 리스트 extend와 del을 사용하여 한번에 확장 및 삭제하는 방식으로 코드 리팩토링하였습니다.
https://github.com/seonmin5/codingtest_Python
GitHub - seonmin5/codingtest_Python
Contribute to seonmin5/codingtest_Python development by creating an account on GitHub.
github.com
반응형
'Python' 카테고리의 다른 글
[Python/level 0] 세로 읽기 - 181904, 리스트 슬라이싱 (0) | 2024.08.31 |
---|---|
[Python/level 0] 날짜 비교하기 - 181838, int(date1 > date2) (0) | 2024.08.31 |
[Python/level 1] 두 정수 사이의 합 - 12912, sum + 리스트 컴프리헨션 vs. for 반복문 (0) | 2024.08.31 |
[Python/level 0] 배열의 원소만큼 추가하기 - 181861 (1) | 2024.08.31 |
[Python/level 0] 숫자 찾기 - 120904, enumerate (0) | 2024.08.31 |