티스토리 뷰

반응형

 

[Python] 백준 알고리즘 온라인 저지 1316번 : 그룹 단어 체커

 

Python3 코드

n = int(input())

group_word = 0
for _ in range(n):
    word = input()
    error = 0
    for index in range(len(word)-1):  # 인덱스 범위 생성 : 0부터 단어개수 -1까지 
        if word[index] != word[index+1]:  # 연달은 두 문자가 다른 때,
            new_word = word[index+1:]  # 현재글자 이후 문자열을 새로운 단어로 생성
            if new_word.count(word[index]) > 0:  # 남은 문자열에서 현재글자가 있있다면
                error += 1  # error에 1씩 증가.
    if error == 0:  
        group_word += 1  # error가 0이면 그룹단어
print(group_word)

 

 

Python3 코드 풀이

 

1. 코드 풀이에 대한 전체적인 내용 정리

이 문제는 그룹 단어를 찾아 개수를 출력하는 문제이다. 그룹 단어는 서로 다른 알파벳으로 이어진 단어로 같은 단어는 연속해서만 나올 수 있다. 같은 알파벳이 떨어져 있는 단어는 그룹 단어가 아니다.

 

그룹 단어를 찾기 위해서 문자열의 알파벳을 하나씩 확인하고 이전 알파벳과 다른 알파벳이 나오는 경우 남아있는 문자열에서 동일한 알파벳이 있는지를 확인해나가는 방식으로 문제를 풀었다. 

 

2. 코드 for문 상단부, 변수를 선언한다.

n = int(input())

group_word = 0
for _ in range(n):
    word = input()
    error = 0

맨 처음 단어의 개수 n을 입력받으면 for문을 n번 반복한다. for문을 시작하기 전 그룹 단어의 개수를 저장할 변수로 group_word를 생성해서 0을 선언하였다. 

 

for문을 반복하는 동안 단어를 입력받으면 word 변수에 선언하고 error변수는 그룹 단어가 아닌 경우를 찾는 데 사용하였다. 

 

3. for문의 하위 for문에서 그룹 단어가 아닌 경우를 체크한다.

    for index in range(len(word)-1):  # 인덱스 범위 생성 : 0부터 단어개수 -1까지 
        if word[index] != word[index+1]:  # 연달은 두 문자가 다른 때,
            new_word = word[index+1:]  # 현재글자 이후 문자열을 새로운 단어로 생성
            if new_word.count(word[index]) > 0:  # 남은 문자열에서 현재글자가 있있다면
                error += 1  # error에 1씩 증가.

 

range 함수로 입력받는 단어의 개수보다 1개 적은 숫자의 범위를 생성하고 입력받은 문자열의 인덱스로 이용했다. if조건식에서 연단 두 알파벳을 비교해서 두 알파벳이 다른 경우 남은 문자열을 새로운 단어로 생성하고 count 함수로 동일한 알파벳이 있는지를 체크한다. 만일 count 함수로 반환된 숫자가 0이 아닌 경우는 그룹 단어가 아니고 error 변수에 1을 더하였다.

 

4. 코드 하단부, 그룹 단어의 개수를 출력한다.

    if error == 0:  
        group_word += 1  # error가 0이면 그룹단어
print(group_word)

두 번째 for문이 끝나고 error변수가 0이면 그룹 단어이다. if조건식을 이용해서 error변수가 0인 경우에 group_word 변수의 숫자를 1 더한다. 

 

두 개의 for문이 모두 끝나고 나면 group_word 변수에 저장된 숫자를 출력해서 문제를 풀었다. 

 

반응형
댓글
반응형