https://www.acmicpc.net/problem/2993
2993번: 세 부분
첫째 줄에 원섭이가 고른 단어가 주어진다. 고른 단어는 알파벳 소문자로 이루어져 있고, 길이는 3보다 크거나 같고, 50보다 작거나 같다.
www.acmicpc.net
[풀이 방법]
1. 세 부분으로 나누다.
2. 나눈 단어를 각각 순서를 뒤집는다.
3. 세 단어를 합친다.
브루트 포스로 쪼갤 수 있는 모든 경우의 수로 쪼개고 위의 방식을 반복한다.
쪼갤 때에는 두 개의 포인터가 있다고 생각하고, 앞에서 부터 쪼갤 위치, 뒤에서 부터 쪼갤 위치를 준다.
예제에 있는 mobitel을 예시로 들면 다음과 같이 쪼갤 수 있다.
단어를 나누는 것과, range 에 대한 index에서 버벅였다.
import sys
input = sys.stdin.readline
word = input().strip()
ans = word
n = len(word)
for i in range(1,n-2): #앞 포인트
for j in range(n-1,i,-1): #뒷 포인트
new = word[0:i][::-1] + word[i:j][::-1] + word[j:][::-1]
if new < ans:
ans = new
print(ans)
'알고리즘 공부 > 브루트포스' 카테고리의 다른 글
[백준/브루트포스] 1476번: 날짜 계산 (0) | 2022.09.18 |
---|---|
[백준/브루트포스] 14426 접두사 찾기 (0) | 2022.04.04 |
[백준/브루트포스] 4970번 디지털 회로개론 (0) | 2022.03.23 |
[백준/브루트포스] 1907번 탄소 화합물 (0) | 2022.03.17 |
[백준/브루트포스] 3085번 사탕 게임 (0) | 2022.03.11 |