정리
백준 1251번: 단어 나누기 본문
백준 1251번: 단어 나누기
1251번: 단어 나누기
알파벳 소문자로 이루어진 단어를 가지고 아래와 같은 과정을 해 보려고 한다.
www.acmicpc.net

- 그리디 알고리즘을 활용하여 품. 세 단어로 쪼갤 수 있는 경우의 수를 모두 실행하여 그 중 사전순으로 가장 앞서는 단어를 출력함
- 이중 for문을 활용하여 단어를 세 단어로 나눈다(아래 코드에서 i와 j가 세 단어로 나누는 일종의 경계선).
- 나눈 뒤에 문제처럼 뒤집어 준다. 이는 reverse()를 활용한다
- 뒤집은 세 단어를 합한 뒤에 tmp 리스트에 저장한다
- tmp 리스트에는 세 단어가 따로 저장 돼 있으므로 join()을 통해 하나의 단어로 만든 뒤에 sort한다
- 가장 처음에 있는 단어가 정답이다
아래는 파이썬 코드
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
word = list(input()) | |
answer = [] | |
tmp = [] | |
for i in range(1, len(word) - 1): | |
for j in range(i + 1, len(word) ): | |
a = word[:i] | |
b = word[i:j] | |
c = word[j:] | |
a.reverse() | |
b.reverse() | |
c.reverse() | |
tmp.append(a + b + c) | |
for a in tmp: | |
answer.append(''.join(a)) | |
print(sorted(answer)[0]) |
'Programming > 백준 BOJ' 카테고리의 다른 글
백준 1669번: 멍멍이 쓰다듬기 (0) | 2021.01.13 |
---|---|
백준 1339번: 단어 수학 (0) | 2021.01.11 |
백준 1654번: 랜선 자르기 (0) | 2021.01.05 |
백준 1789번: 수들의 합 (0) | 2020.12.25 |
백준 2493번: 탑 (0) | 2020.10.12 |
Comments