코드트리 | 코딩테스트 준비를 위한 알고리즘 정석 (codetree.ai)
📚 문제 확인
- 문자열과 요청의 갯수N, 세부 요청이 차례로 주어진다.
- 요청을 수행한 결과를 출력한다.
- 각 요청은 다음과 같다.
1. 맨 앞의 문자를 가장 뒤로 보내고 나머지는 한 칸씩 앞으로 당기기
2. 맨 뒤의 문자를 가장 앞으로 가져오고 나머지는 한 칸씩 뒤로 밀기
3. 문자열을 좌우로 뒤집기
📝 입출력 예시
🔍 문제 분석
- 문자열을 조작하는 방법을 알고 있으면 해결할 수 있는 문제
✅ 최종 풀이 1
- 처음 생각한 방법은 문자를 리스트에 나누어 받은 뒤 리스트 안에서 연산하고, join으로 출력하는 방법
- 문자열을 쪼갠 뒤 다시 붙이는 과정이 수행시간에 큰 영향을 미친다는 것을 알게 되었다.
word, spin = input().split()
command_list = []
for i in range(int(spin)):
command_list.append(int(input()))
word_list = list(word)
for command in command_list:
if command == 1:
word_list.append(word_list.pop(0))
print("".join(word_list))
elif command == 2:
word_list.insert(0, word_list.pop(len(word_list)-1))
print("".join(word_list))
else:
word_list.reverse()
print("".join(word_list))
✅ 최종 풀이 2
- 문자열 자체로 연산을 진행하니 Runtime이 비약적으로 단축된 것을 확인할 수 있었다.
word, spin = input().split()
command_list = []
for i in range(int(spin)):
command_list.append(int(input()))
for command in command_list:
if command == 1:
word = word[1:] + word[0]
print(word)
elif command == 2:
word = word[-1] + word[:-1]
print(word)
else:
word = word[::-1]
print(word)
'Problem Solving' 카테고리의 다른 글
[Code Tree - Intermediate] 지그재그로 숫자 채우기 (0) | 2021.08.09 |
---|---|
[Code Tree - Intermediate] 숫자가 더 큰 인접한 곳으로 이동(dx, dy 테크닉) (0) | 2021.08.08 |
[Code Tree - Novice] 방향에 맞춰 이동(dx, dy 테크닉) (0) | 2021.08.08 |
[Code Tree - Intermediate] N개의 숫자 중 최소 (0) | 2021.08.06 |
[Code Tree - Intermediate] 19단 출력 (0) | 2021.08.05 |
댓글