1316번: 그룹 단어 체커
그룹 단어란 단어에 존재하는 모든 문자에 대해서, 각 문자가 연속해서 나타나는 경우만을 말한다. 예를 들면, ccazzzzbb는 c, a, z, b가 모두 연속해서 나타나고, kin도 k, i, n이 연속해서 나타나기 때
www.acmicpc.net
문제
그룹 단어란 단어에 존재하는 모든 문자에 대해서, 각 문자가 연속해서 나타나는 경우만을 말한다. 예를 들면, ccazzzzbb는 c, a, z, b가 모두 연속해서 나타나고, kin도 k, i, n이 연속해서 나타나기 때문에 그룹 단어이지만, aabbbccb는 b가 떨어져서 나타나기 때문에 그룹 단어가 아니다.
단어 N개를 입력으로 받아 그룹 단어의 개수를 출력하는 프로그램을 작성하시오.
입력
첫째 줄에 단어의 개수 N이 들어온다. N은 100보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에 단어가 들어온다. 단어는 알파벳 소문자로만 되어있고 중복되지 않으며, 길이는 최대 100이다.
출력
첫째 줄에 그룹 단어의 개수를 출력한다.
1. 문제 접근 방식
1) 그룹 단어가 될 수 있는 조건 파악
- 알파벳이 연속으로 나오고, 연속으로 나오지 않아도 됨
- 단, 이전에 나왔던 알파벳이 이후에 나오게 된다면 그룹단어가 될 수 없음
2) 위의 2가지 조건으로 if 조건문 실행
- 알파벳이 연속으로 나올 때는 그룹단어가 될 수 있기에 pass
→ 인덱스를 활용하여 앞뒤 알파벳을 지정해줄 것이기 때문에 인덱스 범위 넘지 않게 설정하는 것이 중요함!
- 이전에 나왔던 알파벳이 다다음에 나온다면 그룹단어가 아니기에 반복 break
→ 그룹단어 후보 N개에서 아니면 -1 해줌
2. 풀이 코드
N = int(input())
for _ in range(N):
word = input()
for i in range(len(word)-1):
# 앞뒤 알파벳이 같아도 그룹단어 o
if word[i] == word[i+1]:
pass
# 처음에 나왔던 알파벳이 다다음부터 나온다면 그룹단어 x
elif word[i] in word[i+2:]:
N -= 1 # 그룹단어가 되지 않기 때문에 -1 해주기
break # 이 조건에서 그룹단어가 안되는 것을 알기에 더이상 반복할 필요 x
print(N)
아직 인덱스를 다룰려면 더 많은 문제를 풀어야겠다는 생각을 했다.
그리고 어떤 조건을 세워야 할 지 생각해보는 연습도 하기!
'코딩 테스트 > Python' 카테고리의 다른 글
[백준 코딩테스트(Python)] 기본 수학 1 - 분수찾기 (0) | 2022.09.05 |
---|---|
[백준 코딩테스트(Python)] 기본 수학 1 - 벌집 (0) | 2022.09.05 |
[백준 코딩테스트(Python)] 1차원 배열 - OX퀴즈 (0) | 2022.08.22 |
[백준 코딩테스트(Python)] 반복문 - 더하기 사이클 (0) | 2022.08.18 |
[백준 코딩테스트(Python)] 반복문 - A+B - 4 (0) | 2022.08.17 |