티스토리 뷰

알고리즘/백준

백준 2661 좋은수열 C++

4567은 소수 2021. 11. 28. 01:40

https://www.acmicpc.net/problem/2661

 

2661번: 좋은수열

첫 번째 줄에 1, 2, 3으로만 이루어져 있는 길이가 N인 좋은 수열들 중에서 가장 작은 수를 나타내는 수열만 출력한다. 수열을 이루는 1, 2, 3들 사이에는 빈칸을 두지 않는다.

www.acmicpc.net

1,2,3으로만 이루어진 수열 중 좋은 수열의 최소값을 찾는 문제입니다.

 

좋은 수열은 임의의 인접한 두 부분수열이 동일한 것이 없는 것으로 다음은 나쁜 수열입니다.

 

ex. 33 / 123123 / 12323 

 

1,2,3 3개의 수만 이용하여 구하는 것이므로 빈 string에 1,2,3을 하나씩 넣어보며 나쁜 수열이 나오는 경우 진행을 중단합니다. 1,2,3 순으로 dfs를 진행하기 때문에 가장 처음으로 좋은 수열이 나오는 경우가 최솟값입니다.

 

좋은 수열임을 판단하는 것은 나쁜 수열이 될 수 있는 경우를 간격을 늘려가며 계속 체크하며 확인하면 됩니다. 

123 이라는 수열에 1이 새로 들어오면 1231 => 12 / 31 확인 => 좋은 수열

12312 라는 수열에 3이 새로 들어오면 12 31 / 23 확인, 123 / 123 확인 => 나쁜 수열 

 

코드는 다음과 같습니다.

 

 

'알고리즘 > 백준' 카테고리의 다른 글

15711 환상의 짝꿍 C++  (0) 2021.12.05
백준 2529 부등호 C++  (0) 2021.12.01
백준 1422 숫자의 신 C++  (0) 2021.11.25
백준 1701 Cubeditor C++  (0) 2021.11.23
백준 14466 소가 길을 건너간 이유6 c++  (0) 2021.11.18
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
TAG
more
«   2024/12   »
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
29 30 31
글 보관함