알고리즘 문제 풀이: 파이썬/BOJ

[BOJ_1316] 그룹단어 체크

hueco 2021. 7. 1.

문제 링크: https://www.acmicpc.net/problem/1316

 

1316번: 그룹 단어 체커

그룹 단어란 단어에 존재하는 모든 문자에 대해서, 각 문자가 연속해서 나타나는 경우만을 말한다. 예를 들면, ccazzzzbb는 c, a, z, b가 모두 연속해서 나타나고, kin도 k, i, n이 연속해서 나타나기 때

www.acmicpc.net

내 풀이:

참고용 풀이:

Review:

 내 풀이에서는 단어에서 두 개 이상의 알파벳에 대해 체크했지만 참고용 풀이에서는 모든 원소에 대해 인접 원소를 비교해서 문제를 해결한 것을 확인할 수 있다. j번째 원소가 j+1번째 원소와 같지 않을 때, j+1번째의 원소 보다 나중에 나오는 원소에서 j번째 원소랑 일치하는 것이 있다면 그룹 단어의 count를 1 감소시키고 break를 통해 다음 단어를 검증하는 방법으로 문제를 해결했다. 내 풀이와 접근하는 방식이 달라서 재미있었다.

 

Idea:

 그룹단어가 아닌 것을 확인하기 위해 단어의 알파벳이 2개 이상인 것을 확인했다. 2개 이상인 알파벳에 대해 index()와 rindex()를 사용해 시작 인덱스와 마지막 인덱스를 구했고, 리스트 슬라이싱으로 시작 인덱스부터 마지막 인덱스까지의 문자열을 추출했다. 추출한 문자열을 집합을 이용해서 중복을 제거했고, 중복을 제거한 집합의 원소가 1보다 크면 추출한 문자열 사이에 다른 알파벳이 포함되어 있다는 의미이므로 나올 수 있는 그룹단어의 최대값에서 1을 뺀다. 반복문을 종료되면 그룹단어의 수 n을 출력한다.

'알고리즘 문제 풀이: 파이썬 > BOJ' 카테고리의 다른 글

[BOJ_7568] 덩치  (0) 2021.07.11
[BOJ_1259] 펠린드롬수  (0) 2021.07.05
[BOJ_10773] 제로  (0) 2021.07.01
[BOJ_1157] 단어공부  (0) 2021.07.01
[BOJ_2292] 벌집  (0) 2021.06.09

댓글