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 ] 해답
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)
--- 결과과정 추가해설
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 = int(answer)
-- 풀이과정에서 적합하지 않은 부분이 있을 수 있습니다. 만약 수정사항이나 더 좋은 의견 있으시다면 댓글로 남겨주세요

'파이썬 Phyton' 카테고리의 다른 글
[파이썬 코딩] Cos Pro 1급 4차 문제8 - n번째로 작은 수 구하기 (0) | 2023.07.17 |
---|---|
[파이썬 코딩] 리스트를 문자로 변환 (0) | 2023.07.17 |
[파이썬 코딩] collections모듈 _ deque (데크) _ appendleft, rotate, reversed, extend, maxlen (0) | 2023.07.17 |
[파이썬 코딩] Cos Pro 1급 4차 문제1 - 사전에서 단어찾기 (0) | 2023.07.17 |
[파이썬 코딩] Cos Pro 1급 3차 문제1 - 배열을 회전시켜보세요 (0) | 2023.07.17 |