알고리즘/BOJ

백준 13144번 List of Unique Numbers

꾸준함. 2024. 4. 8. 08:50

문제 링크입니다: https://www.acmicpc.net/problem/13144

 

13144번: List of Unique Numbers

길이가 N인 수열이 주어질 때, 수열에서 연속한 1개 이상의 수를 뽑았을 때 같은 수가 여러 번 등장하지 않는 경우의 수를 구하는 프로그램을 작성하여라.

www.acmicpc.net

 

투포인터를 이용해 풀었으며 경우의 수가 int 범위를 넘어갈 수 있는 문제였습니다.

 

알고리즘은 아래와 같습니다.

1. 포인터 두 개를 모두 0으로 초기화한 후 구간 내 중복된 숫자가 나올 때까지 right를 증가시켜 구간을 넓힙니다.

2. 구간 내 중복된 숫자가 나올 경우 left를 하나 증가시켜 구간 내 중복된 숫자를 제거하고 중복된 숫자가 포함되었던 순열의 경우의 수를 결과에 더해줍니다.

  • 예제 입력 #2에서 [1, 2, 3, 1]이 될 경우 left를 하나 증가시켜 [2, 3, 1]로 만들고 중복된 숫자가 포함되었던 순열 [1], [1, 2], [1, 2, 3]의 경우의 수 3을 result에 더해줌

 

3. right가 N 미만일 때까지 1번, 2번 과정을 반복합니다.

4. 3번까지 완료된 이후 구간 내 순열 경우의 수를 result에 더해주고 출력해 줍니다.

 

 

개발환경:Visual Studio 2017

 

지적, 조언, 질문 환영입니다! 댓글 남겨주세요~

반응형

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

백준 12094번 2048 (Hard)  (1) 2024.04.21
백준 2776번 암기왕  (0) 2024.04.20
백준 14469번 소가 길을 건너간 이유 3  (0) 2024.04.08
백준 2109번 순회강연  (0) 2024.04.06
백준 2170번 선 긋기  (0) 2024.04.03