문제
1251번: 단어 나누기
알파벳 소문자로 이루어진 단어를 가지고 아래와 같은 과정을 해 보려고 한다. 먼저 단어에서 임의의 두 부분을 골라서 단어를 쪼갠다. 즉, 주어진 단어를 세 개의 더 작은 단어로 나누는 것이다
www.acmicpc.net
알고리즘
- 반복문을 통해 세 개의 단어로 자를 수 있는 모든 경우의 단어를 구한다.
- 모든 경우의 단어를 뒤집은 후 다시 원래 순서로 합친 후 리스트에 추가한다.
- 사전 순으로 가장 앞선 단어를 출력하기 위해 리스트에서 제일 작은 단어를 출력한다.
코드
import sys
word = list(map(str, sys.stdin.readline().rstrip("\n")))
res = []
# 반복문을 통해 세 개의 단어로 자른다.
for i in range(1, len(word) - 1):
for j in range(i + 1, len(word)):
first = word[:i] # 첫 번째 단어
second = word[i:j] # 두 번째 단어
third = word[j:] # 세 번째 단어
# 각 단어를 뒤집는다.
first.reverse()
second.reverse()
third.reverse()
# 뒤집은 단어를 원래 순서로 합친 후 리스트에 추가
res.append("".join(first + second + third))
# 사전 순으로 가장 앞선 단어를 출력하기 위해
# 리스트에서 제일 작은 단어를 출력
print(min(res))
github
GitHub - junjange/CodingTest: 내가 푼 코딩 테스트 문제와 해결법
내가 푼 코딩 테스트 문제와 해결법. Contribute to junjange/CodingTest development by creating an account on GitHub.
github.com
'CodingTest > Baekjoon' 카테고리의 다른 글
| [baekjoon] 백준 13413번(파이썬): 오셀로 재배치 (0) | 2022.01.14 |
|---|---|
| [baekjoon] 백준 5555번(파이썬): 반지 (0) | 2022.01.13 |
| [baekjoon] 백준 2671번(파이썬): 잠수함식별 (0) | 2022.01.11 |
| [baekjoon] 백준 1013번(파이썬): Contact (0) | 2022.01.10 |
| [baekjoon] 백준 9996번(파이썬): 한국이 그리울 땐 서버에 접속하지 (0) | 2022.01.09 |