같은 숫자는 싫어

Contents

같은 숫자는 싫어#

프로그래머스 ai 추천 문제
영역:구현
나의 예상 정답률:68.4%
상승률:1.3%

배열 arr가 주어집니다.
배열 arr의 각 원소는 숫자 0부터 9까지로 이루어져 있습니다.
이때, 배열 arr에서 연속적으로 나타나는 숫자는 하나만 남기고 전부 제거하려고 합니다.
단, 제거된 후 남은 수들을 반환할 때는 배열 arr의 원소들의 순서를 유지해야 합니다.

예를 들면,
arr = [1, 1, 3, 3, 0, 1, 1] 이면 [1, 3, 0, 1] 을 return 합니다.
arr = [4, 4, 4, 3, 3] 이면 [4, 3] 을 return 합니다.
배열 arr에서 연속적으로 나타나는 숫자는 제거하고 남은 수들을 return 하는 solution 함수를 완성해 주세요.

제한사항
배열 arr의 크기 : 1,000,000 이하의 자연수
배열 arr의 원소의 크기 : 0보다 크거나 같고 9보다 작거나 같은 정수

Python#

# input setting
problem_num = "같은숫자는싫어"
import os, sys

path = os.getcwd() + f"\\txt\\{problem_num}" + ".txt"
sys.stdin = open(path, "r")
arr = list(map(int, sys.stdin.readline().strip().split(",")))
def solution(arr):
    answer = []
    for i in arr:
        if len(answer) == 0:
            answer.append(i)
        elif answer[-1] != i:
            answer.append(i)
        else:
            continue
    return answer
solution(arr)
[4, 3]

어려울 것이 없음 리스트에 맞는 것을 넣어주면서 리스트 마지막 요소와 비교해주면서 계속 넣어주면 됨 경우의 수 체크하기

JavaScript#

# js2py로 자바스크립트 코드 확인
import js2py

js_code = """
function solution(arr){
    var answer = [];
    for(var i = 0;i<arr.length;i++){
        if(answer.slice(-1)[0]!=arr[i]){
            answer.push(arr[i]);
        }
    }
    return answer;
}
"""
my_code = js2py.eval_js(js_code)
my_code(arr)
[4, 3]

Stack queue에 있는 문제이다. array answer를 사용해서 for 문을 돌아준다. answer의 마지막에 있는 것과 들어갈 것을 비교해서 같은 경우에는 넣지않고 else로 빠져나가고 맞는 경우에만 answer에 push(append python list)를 해준다. 어려울게 없다.

다만 여기서 하나의 python jupyter notebook에서 js까지 확인해보기 위해서 js2py라는 라이브러리를 poetry add를 통해서 넣어주고 돌려봤다. 역시 파이썬에는 없는 것이 없다. 히히