programmers- lv.1 (같은 숫자는 싫어)

이예송·2023년 7월 1일

PS

목록 보기
5/97

문제링크: 같은 숫자는 싫어

✍🏻 Information

content
언어python
난이도⭐️
풀이시간15분
제출횟수3
인터넷검색유무yes




🍒 My Code

def solution(arr):
    answer = [] #answer가 stack
    for i in range (len(arr)):
        if arr[i]==arr[i-1] and len(answer)!=0:
            continue
        else:
            answer.append(arr[i])
    
    return answer




💡 What I learned

  • 처음에 집합을 사용하면 같은 수를 없애주니까 사용해볼까 했지만 연속적으로 나타내는 수를 지우는 문제여서 방법을 달리하였다.
  • stack/queue 문제라고 하여서 pop, append를 둘 다 사용해보고 싶었으나 append밖에 사용하지 않았다. (다른 사람들 풀이도 보았는데 pop을 사용하는 풀이는 찾지 못했다.)
  • if문 중 len(answer)!=0 조건을 달지 않으니 arr의 맨앞과 맨뒤 숫자가 같을때도 continue하게 되어 저 조건을 꼭 달아주어야했다.
    -> 배열에서 꼭 index 범위 확인해주기
  • if문만 사용하려면 and -> or로 바꾸는법을 사용하면 된다.
def solution(arr):
    answer = [] #answer가 stack
    for i in range (len(arr)):
        if arr[i]!=arr[i-1] or len(answer)==0:
            answer.append(arr[i])
    
    return answer
  • 남의 풀이중 괜찮다고 생각하는 것이 있어 아래에 작성한다.
def no_continuous(s):
    result = []
    for c in s:
        if len(result) == 0 or result[-1] != c:
            result.append(c)

    return result

python에서의 음수 index
: 음수로 지정하면 뒤에서부터 요소에 접근
ex) -1은 뒤에서 첫 번째, -5는 뒤에서 다섯 번째 요소

  • python에서의 stack 사용법
    1) 생성 init: stack=[]
    2) 원소추가 push: stack.append() -> 가장 뒤에 추가
    3) 원소제거 pop: stack.pop()
    -> top=stack.pop()으로 pop과 동시에 top 가져오기
    4) 원소제거x top: top=stack[-1]

0개의 댓글