코딩테스트/코딩테스트 Python

[CodeSignal] List Beautifier (Python)

sseozytank 2022. 9. 5.

https://app.codesignal.com/arcade/python-arcade/meet-python/ZiezPAoWeaK9ThXvQ

 

List Beautifier | CodeSignal

def solution(a):     res = a[:]     while res and res[0] != res[-1]:         ... = res     return res

app.codesignal.com

 

 

✔️문제 요약 

- beautiful list : 첫번째 요소와 마지막 요소가 같거나, 목록이 비어있는 리스트 

- beautiful list를 만들어 낼 때 까지 첫번째 요소와 마지막 요소를 잘라내는 함수 구현 

 

✔️풀이 방법 

1.첫번째 요소와 마지막 요소가 같다는 것은, 리스트의 인덱스로 쉽게 구현이 가능하다 

2.앞,뒤가 같아질때까지 앞 뒤를 잘라내는 함수를 구현하면 된다. 

 

문제에 나온 언팩킹이 뭔지 모르기도 하고,  단순히 res[1:-1]=res로 풀려했는데,   타임리밋에 걸려버려서 안됨 ㅜㅜ

(파이썬에서도 실행이 안되는데 오래걸리는 코드인건지 안되는 코드인건지 모르겠다...ㅠ0ㅠ) 

def solution(a):
    res = a[:]
    while res and res[0] != res[-1]:
        res[1:-1] = res
    return res

 

모범 답안을 살펴보았더니 이런식으로 코드가 작성되어있었는데 이게 무슨뜻이냐면 

unpacking이란게 *을 사용하는 방법으로, 

start, *res, end =res 라면 res에는 start,end 양 끝값이 제거되고 res가 들어가진다고 함 .... 

 

(출처 :https://greenhelix.tistory.com/134?category=902128)

def solution(a):
    res = a[:]
    while res and res[0] != res[-1]:
        a, *res, b = res
    return res

a,b에는 문자열 아무거나 들어가도 상관 없는듯 함 

 

 

✔️고찰

파이썬의 [:]는 슬라이싱 기능으로, 인덱스를 설정해주지 않으면 전체를 불러오는 기능을 한다. 

unpacking이란걸 처음 알게되었다. 

 

댓글