프로그래머스 코딩테스트 고득점 Kit -
스택/큐
- Lv 1. 같은 숫자는 싫어 (Python)
https://school.programmers.co.kr/learn/courses/30/lessons/12906
def solution(arr):
answer = []
for i in range(len(arr) - 1):
if (arr[i] != arr[i + 1]): # 앞 뒤 값이 다르면
answer.append(arr[i]) # 맨 앞의 값을 넣어주고
answer.append(arr[-1]) # 마지막에 비교 못한 요소를 추가로 넣어준다
return answer
ex. [1,1,3,3,0,1,1]
0인덱스 1인덱스 비교 → 같음 → 넘어감
1인덱스 2인덱스 비교 → 다름 → 1인덱스에 있는 1을 넣음
2인덱스 3인덱스 비교 → 같음 → 넘어감
3인덱스 4인덱스 비교 → 다름 → 3인덱스에 있는 3을 넣음
4인덱스 5인덱스 비교 → 다름 → 4인덱스에 있는 0을 넣음
⇒ for문이 len(arr) - 1만큼 돌아서 현재 끝남, 따라서 현재의 answer 상태 = [1, 3, 0]
마지막에 있는 1을 비교하지 못했다 → 맨 마지막 인덱스 값을 넣어준다.
좋은 코드라고 생각되는 정답
def no_continuous(s):
result = []
for c in s:
if len(result) == 0 or result[-1] != c:
result.append(c)
return result
참고 : https://ooyoung.tistory.com/117
스택/큐 자료구조를 위해서는 알아둬야 할 것 같아서 정리하였다.
append()
: 하나의 객체로 추가됨>>> nums = [1, 2, 3]
>>> nums.append(4)
[1, 2, 3, 4]
>>> nums.append([5, 6])
[1, 2, 3, 4, [5, 6]] # 리스트가 하나의 객체로 추가되었음
extend()
: 배열 끝에 추가됨>>> nums = [1, 2, 3]
>>> nums.extend([4, 5])
[1, 2, 3, 4, 5] #리스트로 주어진 [4, 5]의 요소가 각각 추가 되었음
>>> a = [10]
>>> nums.extend(a)
[1, 2, 3, 4, 5, 10]
insert()
: insert(위치, 요소) 로 해당 위치 앞에 요소 추가 가능>>> nums = [1, 2, 3]
>>> nums.insert(0, [10, 20]) # 0번째(맨앞에) 추가
[[10, 20], 1, 2, 3]
>>> nums.insert(-1, 100) # 끝에서 1번째 전에 추가
>>> print(nums)
[[10, 20], 1, 2, 100, 3] # 리스트 맨 끝에 저장되지 않음
>>> nums = [1, 2, 3]
>>> nums.insert(len(nums), 100)
[1, 2, 3, 100] # array 맨 끝에 추가됨
글이 많은 도움이 되었습니다, 감사합니다.