본문 바로가기
코딩테스트/백준 알고리즘 풀이

[백준 알고리즘/python] 백준 1316번 그룹 단어 체커, 파이썬

by Godgil 2020. 3. 20.

백준 알고리즘 1316번 그룹 단어 체커, 파이썬

 

이번 문제는 백준 알고리즘의 1316번 그룹 단어 체크이다. 역시 파이썬으로 풀어보았다.

자, 정리해보면 그룹 단어는 단어에 존재하는 모든 문자가 연속적으로 나타나는 경우이다.

단어 N개를 입력받아 그 중에 그룹 단어의 개수를 구하는 프로그램을 작성 하라는것이다.

 

문제의 조건

#조건 1. 첫째줄에 단어의 개수 N을 입력받는다.

#조건 2. 알파벳 소문자로만 이루어진 단어들이 N개만큼 줄바꿈 기준으로 주어진다.

 

문제에 대한 내 생각이다.

# 생각 1. 백준 알고리즘 1316번 그룹 단어 체커, 파이썬

 

 

 

이번 문제는 백준 알고리즘의 1316번 그룹 단어 체크이다. 역시 파이썬으로 풀어보았다.

 

자, 정리해보면 그룹 단어는 단어에 존재하는 모든 문자가 연속적으로 나타나는 경우이다.

 

단어 N개를 입력받아 그 중에 그룹 단어의 개수를 구하는 프로그램을 작성 하라는것이다.

 

 

 

문제의 조건

#조건 1. 첫째줄에 단어의 개수 N을 입력받는다.

 

#조건 2. 알파벳 소문자로만 이루어진 단어들이 N개만큼 줄바꿈 기준으로 주어진다.

 

 

 

문제에 대한 내 생각이다.

# 생각 1. 단어를 체크하면서 새로 저장 할 변수 result = str() 하나 생성한다.

 

# 생각 2. 문자열을 받아와서 for문을 이용해 하나씩 집어 넣는데, 

             여기서, 한 문자씩 받아 오면서, 문자가 result 라는 문자열 내에 없으면 i를 result에 더해주고

             만약에 있다면, 조건이 나뉜다. result의 맨 마지막 문자가 아닐 경우 False를 반환해주고

             맨 마지막 경우일 때 True를 반환 해 주는 함수를 하나 작성한다.

 

# 생각 3. 받아온 숫자만큼 반복문으로 함수에 문자열을 넣고 돌리면서 count를 세어준다. count의 값이 정답이다

 

 

def is_true(string):
    result = ""
    for i in string:
        if i not in result:
            result = result + i
        else:
            if i != result[-1]:
                return False
            else:
                result = result + i
    return True

num = int(input())
count = 0
for i in range(num):
    string = input()
    if is_true(string) == True:
        count = count + 1

print(count)

 

 

간단 했던거 같은데, 코드 짜면서 좀 오래걸린 문제 였던거 같다.

조건문이 많아지다보니 헷갈려서 그랬던거 같은데, 좀더 천천히 생각 해 봐야겠다.

 

 

문제 출처

https://www.acmicpc.net/problem/1316

 

1316번: 그룹 단어 체커

그룹 단어란 단어에 존재하는 모든 문자에 대해서, 각 문자가 연속해서 나타나는 경우만을 말한다. 예를 들면, ccazzzzbb는 c, a, z, b가 모두 연속해서 나타나고, kin도 k, i, n이 연속해서 나타나기 때문에 그룹 단어이지만, aabbbccb는 b가 떨어져서 나타나기 때문에 그룹 단어가 아니다. 단어 N개를 입력으로 받아 그룹 단어의 개수를 출력하는 프로그램을 작성하시오.

www.acmicpc.net

 

댓글