Skip to content

Commit bbcc935

Browse files
committed
[Silver V] Title: 단어 나누기, Time: 36 ms, Memory: 33432 KB -BaekjoonHub
1 parent 8c4b4ff commit bbcc935

File tree

2 files changed

+64
-0
lines changed

2 files changed

+64
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
# [Silver V] 단어 나누기 - 1251
2+
3+
[문제 링크](https://www.acmicpc.net/problem/1251)
4+
5+
### 성능 요약
6+
7+
메모리: 33432 KB, 시간: 36 ms
8+
9+
### 분류
10+
11+
브루트포스 알고리즘, 구현, 정렬, 문자열
12+
13+
### 제출 일자
14+
15+
2025년 3월 7일 21:45:21
16+
17+
### 문제 설명
18+
19+
<p>알파벳 소문자로 이루어진 단어를 가지고 아래와 같은 과정을 해 보려고 한다.</p>
20+
21+
<p>먼저 단어에서 임의의 두 부분을 골라서 단어를 쪼갠다. 즉, 주어진 단어를 세 개의 더 작은 단어로 나누는 것이다. 각각은 적어도 길이가 1 이상인 단어여야 한다. 이제 이렇게 나눈 세 개의 작은 단어들을 앞뒤를 뒤집고, 이를 다시 원래의 순서대로 합친다.</p>
22+
23+
<p>예를 들어,</p>
24+
25+
<ul>
26+
<li>단어 : arrested</li>
27+
<li>세 단어로 나누기 : ar / rest / ed</li>
28+
<li>각각 뒤집기 : ra / tser / de</li>
29+
<li>합치기 : ratserde</li>
30+
</ul>
31+
32+
<p>단어가 주어지면, 이렇게 만들 수 있는 단어 중에서 사전순으로 가장 앞서는 단어를 출력하는 프로그램을 작성하시오.</p>
33+
34+
### 입력
35+
36+
<p>첫째 줄에 영어 소문자로 된 단어가 주어진다. 길이는 3 이상 50 이하이다.</p>
37+
38+
### 출력
39+
40+
<p>첫째 줄에 구하고자 하는 단어를 출력하면 된다.</p>
41+
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
# 1251 단어 나누기
2+
# 실버 5
3+
4+
import sys
5+
6+
word = list(sys.stdin.readline().strip())
7+
answer = []
8+
tmp = []
9+
10+
for i in range(1, len(word) - 1):
11+
for j in range(i + 1, len(word) ):
12+
a = word[:i]
13+
b = word[i:j]
14+
c = word[j:]
15+
a.reverse()
16+
b.reverse()
17+
c.reverse()
18+
tmp.append(a + b + c)
19+
20+
for a in tmp:
21+
answer.append(''.join(a))
22+
23+
print(sorted(answer)[0])

0 commit comments

Comments
 (0)