File tree 2 files changed +64
-0
lines changed
2 files changed +64
-0
lines changed Original file line number Diff line number Diff line change
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 number Diff line number Diff line change
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 ])
You can’t perform that action at this time.
0 commit comments