Dev/PS
[Python] 백준 1251번 - 단어 나누기
H_W_I
2023. 3. 3. 17:36
https://www.acmicpc.net/problem/1251
1251번: 단어 나누기
알파벳 소문자로 이루어진 단어를 가지고 아래와 같은 과정을 해 보려고 한다. 먼저 단어에서 임의의 두 부분을 골라서 단어를 쪼갠다. 즉, 주어진 단어를 세 개의 더 작은 단어로 나누는 것이다
www.acmicpc.net
풀이
입력값의 최대 길이가 50이고 제한시간이 2초라서 브루트포스로 풀 수 있는 문제이다. 문제의 지시에 따라 코드를 구현하면 된다.
- 입력 받은 단어를 세 단어로 나눈다.
- 나누어진 단어들을 뒤집는다.
- 나누었던 세 단어를 한 단어로 합친다.
- 만들어진 단어를 list에 저장해두었다가 정렬하여 가장 첫번째 있는 단어를 출력한다.
나는 단어를 세부분으로 나누면서 revesed()함수를 사용하여 문자열을 뒤집었다.
word = input()
words = []
for i in range(1, len(word)):
for j in range(i + 1, len(word)):
part1 = ''.join(reversed(word[:i]))
part2 = ''.join(reversed(word[i:j]))
part3 = ''.join(reversed(word[j:]))
words.append(part1 + part2 + part3)
print(sorted(words)[0])
reversed 함수를 사용하면 반환값이 string이 아니기 때문에 결과를 string으로 만들어줘야한다. 이 과정을 없애기 위해서 인덱스 슬라이싱만 이용한 방법으로도 풀어보았다.
word = input()
words = []
for i in range(1, len(word)):
for j in range(i + 1, len(word)):
part1 = word[:i][::-1]
part2 = word[i:j][::-1]
part3 = word[j:][::-1]
words.append(part1 + part2 + part3)
print(sorted(words)[0])