1316번 : 그룹 단어 체커 문제
그룹 단어란 단어에 존재하는 모든 문자에 대해서, 각 문자가 연속해서 나타나는 경우만을 말한다.
예를 들면, ccazzzzbb는 c, a, z, b가 모두 연속해서 나타나고, kin도 k, i, n이 연속해서 나타나기 때문에 그룹 단어이지만,
aabbbccb는 b가 떨어져서 나타나기 때문에 그룹 단어가 아니다.
단어 N개를 입력으로 받아 그룹 단어의 개수를 출력하는 프로그램을 작성하시오.
https://www.acmicpc.net/problem/1316
풀이 코드
n = int(input())
count = 0
for i in range(n):
word = input()
answer = True
for j in range(len(word)-1):
if word[j] != word[j+1] and word[j] in word[j+1:]:
answer = False
break
if answer == True:
count += 1
print(count)
n = int(input())
- 첫째 줄에서 단어의 개수 n 을 입력받음
- input() 은 한 줄의 문자열만 입력받을 수 있음
- 입력받은 문자열을 정수로 처리하기 위해 int() 함수를 사용
count = 0
- 그룹 단어의 개수를 저장할 count 변수
- 0으로 초기화
for i in range(n):
- range() 를 사용하여, 입력받은 n 번 만큼 for 문을 반복
word = input()
- 입력되는 단어를 word 변수에 저장
- n개의 줄에 한 줄씩 단어가 입력되므로, for 문 안에 input() 을 작성
answer = True
- 각 문자가 연속해서 나타나는 그룹단어인 경우, answer = True 로 설정
- 그룹단어가 아닌 경우, 이후 answer = False 로 변경
for j in range(len(word) -1):
- len() 함수는 리스트에 들어 있는 개수를 반환
- len(word) 로, word 리스트에 들어 있는 문자열의 개수를 출력
- 인덱스 0번부터 순회하므로, len(word) -1 해줌
if word[j] != word[j+1] and word[j] in word[j+1]:
- 입력받은 단어의 인접한 두 문자가 서로 다른 경우
answer = False
- 앞선 if 문에 해당하는 경우, 그룹 문자가 아니므로 answer = False 로 설정
break
- 그룹문자가 아닌 경우 (answer = False) , for 문을 벗어남
if answer == True:
- 입력받은 문자를 모두 순차탐색한 후에도 answer = True 인 경우
- 그룹문자에 해당됨
count += 1
- 앞선 if 문에 해당하는 경우, 그룹문자이므로 count 값을 1 증가
print(count)
- n번 반복한 후, 최종 그룹 문자의 개수인 count 를 출력
나동빈 '이것이 코딩 테스트다 with 파이썬' 책을 참고하여 작성하였습니다.
https://www.youtube.com/watch?v=m-9pAwq1o3w&list=PLRx0vPvlEmdAghTr5mXQxGpHjWqSz0dgC
'백준 알고리즘 문제 풀이 [Python]' 카테고리의 다른 글
[백준/Python] 2292번 벌집 (기본수학1) (0) | 2023.02.23 |
---|---|
[백준/Python] 1712번 손익분기점 (기본수학1) (0) | 2023.02.23 |
[백준/Python] 2941번 크로아티아 알파벳 (문자열) (0) | 2023.02.23 |
[백준/Python] 5622번 다이얼 (문자열) (0) | 2023.02.23 |
[백준/Python] 2908번 상수 (문자열) (0) | 2023.02.23 |