greenhelix
greenhelix
greenhelix
06-25 01:00
  • All (229)
    • Algorithm (118)
      • Algorithm (17)
      • Graph (0)
      • Core (6)
      • Python (18)
      • PythonSnippet (4)
      • Java (59)
      • Kotlin (14)
    • Project (0)
    • Study (8)
      • License (5)
      • EIP (3)
    • Programming (63)
      • Android (41)
      • Flutter (1)
      • Bugs Life (21)
      • Linux (0)
    • Tech (32)
      • Tech (17)
      • Drone (4)
      • Hacking (11)
    • Life (6)
      • INGRESS (1)
      • 심시티빌드잇 (0)
250x250

티스토리

hELLO · Designed By 정상우.
greenhelix

greenhelix

#10_Code Signal Arcade Python :: List Beautifier
Algorithm/Python

#10_Code Signal Arcade Python :: List Beautifier

2020. 7. 31. 20:49

코드시그널 아케이드 파이썬 10 번 풀이

 

인트로의 지옥을 벗어났구요.. 그래프를 풀려면, 자바같은 ge가튼 언어는 별로 더라구요.
자 파이썬을 시작해보겠습니다. 조금 배워보니 왜 파이썬 파이썬 하는지 알겠더군요.
약간 자바보다는 안정감이 떨어지지만(?) 개인적으로
유연하고 간편하다? 라는 느낌을 받았습니다. 자 시작해볼까요!!

 

공감 버튼♥눌러주시면 더욱 많은 포스팅을 올리는데 힘이 됩니다!부탁드려요 ^^ 돈드는거 아니잖아요~

문제 해설

Implement the missing code, denoted by ellipses. You may not modify the pre-existing code.

Let's call a list beautiful if its first element is equal to its last element, or if a list is empty. Given a list a, your task is to chop off its first and its last element until it becomes beautiful.
Implement a function that will make the given a beautiful as described,
and return the resulting list as an answer.

Hint: one of the features introduced in Python 3 called extended unpacking could help here.

문제를 보시면, 주어진 리스트에서, 양쪽 끝부분을 짤라달라는 것입니다. 

그러다가 양쪽 끝, 처음 값이 같을때, 그 자르는 행위를 멈추고 리턴해달라는 문제입니다. 

이게 이쁘데요. 이해가 안되요. 

- For a = [3, 4, 2, 4, 38, 4, 5, 3, 2], the output should be listBeautifier(a) = [4, 38, 4].
   Here's how the answer is obtained:
        [3, 4, 2, 4, 38, 4, 5, 3, 2] => [4, 2, 4, 38, 4, 5, 3] => [2, 4, 38, 4, 5] => [4, 38, 4].

- For a = [1, 4, -5], the output should belistBeautifier(a) = [4].

- a = [] >>> [] 

두번째 예시를 보면, 양쪽이 달라서 잘랐습니다. 그리고 한개의 값이 남았습니다. 이런 경우 그대로 한개의 값만 리턴.

새번째 예시는 아예 아무것도 없는 리스트입니다. 이런경우는 [] 것 그대로 리턴입니다. 

자 이제 어느정도 익혔으니 답안을 보겠습니다. 

해결

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

extended unpacking이니 뭐니 힌트라는데 개무시하고 그냥 풀었습니다. 

저는 일단 전체 리스트를 복사했습니다. 

res = a [:]

이렇게 명령하면, a 의 모든 값을 res에 넣을 수 있습니다. 정말 간편해요.. (미쳤어 파이썬...) 


다음은 While반복문입니다. 

조건을  res and res[0] != res[-1] 으로 잡았습니다. 

while res and res[0] != res[-1] :

여기서 res 를 넣은 이유는 세번째 예시 [] 비어있는 값의 경우를 잡아주기 위함입니다. 

그리고 나머지 조건, 처음과 끝 값이 같지 않다면! 아래의 작업을 해라..라는 명령입니다. 


res = res[1:-1]
res = res

저는 그냥 꼼수로 맨뒤의 값과 처음값을 뺀 나머지를 Res로 선어하여 풀었습니다. 

res = res는 불필요한 작업이지만, 이 그지같은 문제에서는  extended unpacking을 사용하게 하고자 이렇게 한듯합니다.

이렇게 하면 꼼수지만 풀어지긴 합니다. 

 

extended unpacking 에 관한 내용

 

Packing and Unpacking Arguments in Python - GeeksforGeeks

A Computer Science portal for geeks. It contains well written, well thought and well explained computer science and programming articles, quizzes and practice/competitive programming/company interview Questions.

www.geeksforgeeks.org

그러나,,, unpacking에대해 알아보니 훨씬 간편하고 재밌네요. 

unpacking 관한 내용2

 

unpacking은 *을 사용하는 방법인데, 

start, *res, end = res 

라고 선언해버리면, Res에는 start, end양 끝 값만 제거하고 res가 들어갑니다. 

패키징한다고 보면되는데, 정말 심박하네요. 

 

이것저것 투닥 투닥 쳐보니... 

awesome = [3, 4, 5, 3, 2]
one, two, *middle, end = awesome
print(end)
print(middle)
print(awesome)

OUTPUT : 

2
[5, 3]
[3, 4, 5, 3, 2]

뭐 이런식으로 사용도 되네요. 신기합니다. 

꼭 같은 변수면으로 안해도 되고, 원하는 변수명에 들어가게 할수도 있네요. 재밌습니다. 

유용하것어.. 


이제 엘리트 분들의 답안을 감상하자!!

Python3

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

 

공감 버튼♥눌러주시면 더욱 많은 포스팅을 올리는데 힘이 됩니다!부탁드려요 ^^ 돈드는거 아니잖아요~

 

 

728x90
반응형
저작자표시 비영리 변경금지 (새창열림)

'Algorithm > Python' 카테고리의 다른 글

#11_Code Signal Arcade Python :: String Definition  (0) 2020.08.04
#09_Code Signal Arcade Python :: Mex Function  (0) 2020.07.30
#08_Code Signal Arcade Python :: Base Conversion  (0) 2020.07.29
    'Algorithm/Python' 카테고리의 다른 글
    • #12_Code Signal Arcade Python :: Fix Message
    • #11_Code Signal Arcade Python :: String Definition
    • #09_Code Signal Arcade Python :: Mex Function
    • #08_Code Signal Arcade Python :: Base Conversion
    greenhelix
    greenhelix
    개발에 관한 것들과 개인적인 것을 담는 블로그

    티스토리툴바