본문 바로가기

파이썬 Phyton

[파이썬 코딩] Cos Pro 1급 4차 문제5 - 규칙에 맞는 숫자 생성 (deque, 리스트를 문자로 변환 )

1 ] 문제

다음과 같이 새로운 숫자를 생성할 때, n번째 생성할 숫자를 구하려고 합니다.

```
1. 첫 번째 수는 1입니다.
2. 다음수를 1의 자리에 추가합니다.
3. 만든 숫자를 뒤집습니다.
4. 숫자 1부터 9까지 추가하면서 2, 3번째 단계를 반복합니다.
5. 숫자 9까지 추가했다면 다시 숫자 1부터 추가합니다.
```

n이 매개변수로 주어질 때, n번째로 생성할 수를 문자열 형태로 return 하는 solution 함수를 작성하려 합니다. 위 구조를 참고하여 코드가 바르게 동작하도록 빈칸을 채워주세요.

 

#####예시 설명

첫 번째 숫자: 1
두 번째 숫자: 21
세 번째 숫자: 312
네 번째 숫자: 4213
다섯 번째 숫자: 53124

따라서 답은 "53124"입니다.

 

2 ] 해답 

 

def solution(n):
   answer = deque()
   for i in range(1,n+1):
      answer.appendleft(str(i))
      if i<n:
          answer = deque(reversed(answer))
return ''.join(answer)

- 먼저 collections 모듈에서 deque를 import 해줍니다.

- 왼쪽부터 값이 입력됨으로 appendleft 메서드 사용

- 값을 reversed 해준 뒤 다시 반복

- n 값이 되었다면 reversed 없이 종료

- 값은 리스트가 아닌 문자형식으로 출력됨으로 join메서드 사용 ''.join(answer)

 

 --- 결과과정 추가해설

def solution(n):
    answer = deque()
    for i in range(1,n+1):
       answer.appendleft(str(i))
       print('appendleft:',answer)
       if i<n:
           answer = deque(reversed(answer))
           print('reversed:',answer)

return ''.join(answer)

appendleft: deque(['1'])
reversed: deque(['1'])


appendleft: deque(['2', '1'])
reversed: deque(['1', '2'])


appendleft: deque(['3', '1', '2'])
reversed: deque(['2', '1', '3'])


appendleft: deque(['4', '2', '1', '3'])
reversed: deque(['3', '1', '2', '4'])


appendleft: deque(['5', '3', '1', '2', '4'])
solution 함수의 반환 값은 53124 입니다.

 

+ 추가적으로 반환값이 str 값으로 int값으로 변환

answer = ''.join(answer)
answer = int(answer)

 


-- 풀이과정에서 적합하지 않은 부분이 있을 수 있습니다. 만약 수정사항이나 더 좋은 의견 있으시다면 댓글로 남겨주세요