• Home
  • About
    • on Weekend photo

      on Weekend

      𝙎𝙩𝙪𝙙𝙮𝙞𝙣𝙜

    • Learn More
    • Instagram
    • Github
  • Archive
    • All Posts
    • All Tags
    • All Categories
  • Categories
    • Problem Solving
    • TIL
    • Study
    • Etc
    • 필사
  • Projects

[프로그래머스] 같은 숫자는 싫어

12 Mar 2021

문제

정해진 대로 풀면 됩니다.

효율성 테스트를 통과하기 위해서는 for loop 1번에 풀어야합니다 (배열의 크기가 10^6이므로 for loop을 2번 돌게 되면 1초가 넘게 됩니다.)

풀이

def solution(arr):
    answer = []
    
    for i in range(1,len(arr)) :
        if(arr[i] == arr[i-1]) :
            continue
        else :
            answer.append(arr[i-1])
    answer.append(arr[len(arr)-1])
    return answer

다른 사람의 풀이

def no_continuous(s):
    a = []
    for i in s:
        if a[-1:] == [i]: continue
        a.append(i)
    return a
  1. a[-1:]를 빈 배열에 돌려도 안죽는구나.. => 리스트 슬라이싱하면 그냥 슬라이싱된 배열을 리턴하기 때문. 즉 빈 배열이 그냥 리턴되는거.
  2. [i]를 이용해 바로 list로 만들어주고 비교함.

해당 코드의 경우에는 빈 배열 a에 s를 넣는데, s를 순회하면서 하나씩 꺼내, 직전에 a에 넣었다면 넣지 않고(if a[-1:]==[i]:continue) 넣었다면 넣는 방식이다.



problem_solvingpython Share Tweet +1