티스토리 뷰

알고리즘

백준 - ZOAC

koyuchang 2021. 6. 21. 12:35

문제 출처:https://www.acmicpc.net/problem/16719

 

16719번: ZOAC

2018년 12월, 처음 시작하게 된 ZOAC의 오프닝을 맡은 성우는 누구보다 화려하게 ZOAC를 알리려 한다. 앞 글자부터 하나씩 보여주는 방식은 너무 식상하다고 생각한 성우는 문자열을 보여주는 새로

www.acmicpc.net

 

 

기존 문자열에서 하나씩 때어보면서 새로운 문자열을 만들고, 사전 순으로 정렬하는 방식으로 확인해야 한다.

 

ZOAC이라는 기존 문자열이 존재한다. 처음에는 알파벳 순으로 가장 빠른 문자를 뽑는다.

 그다음부터는,

 

1. 아직 사용하지 않은 문자들을 하나씩 붙여보면서(붙여지는 문자열의 무조건 뒤에 붙이는 것이 아니라 왼쪽이면 왼쪽, 오른쪽이면 오른쪽에붙여야 한다.)

 

2. 왼쪽, 오른쪽을 정하기 위해 String을 새로운 문자열로 사용하지 않고, 문자형 배열을 사용하여 기존 문자열의 인덱스를 가져와 String으로 변환시켰다.

 

이 말이 무엇이냐,

 

위의 사진처럼, 기존 문자열에서 새로운 문자열에 붙일 문자, 즉 인덱스를 찾으면, 새로운 문자열에 복사하는 방식이다.

현재 새로운 문자열이 A일 때,

ZO

OA

AC

이렇게 3개의 가능성이 있는 문자열이 있다. 각각을 서로 비교하며 AC가 가장 사전 순으로 앞선다는 것을 알게 되고 C의 인덱스인 3을 사용하여 새로운 문자열에 C를 붙이게 된다.

 

이어서 현재 문자열이 AC일 경우,

ZAC

OAC

이렇게 두 가지 경우가 존재한다. 두 경우를 비교했을 때 OAC가 앞선다는 것을 확인이 가능하므로 O의 인덱스를 가져와 새로운 문자열에 O를 붙이게 된다.

 

아래 코드가 그 과정을 담고 있다.

 

 

 

'알고리즘' 카테고리의 다른 글

백준 - 계단 오르기  (0) 2021.06.24
백준 - 내리막 길  (0) 2021.06.23
SWEA - 프로세서 연결하기  (0) 2021.06.19
백준 - 게리맨더링  (0) 2021.06.16
백준 - Z  (0) 2021.06.16
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
글 보관함