티스토리 뷰

[python/boj]

1316번. 그룹 단어 체커

 

www.acmicpc.net/problem/1316

 

1316번: 그룹 단어 체커

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

www.acmicpc.net


 

입력

1, 단어의 개수 N(N은 100보다 작거나 같은 자연수이다)

2, N개의 단어 (알파벳 소문자, 중복 x, 길이 <= 100)

 

출력

그룹 단어의 개수

 

풀이
num = int(input())

rslt = 0
for i in range(num):
    str = input()

    word = []
    rslt += 1
    for s in str:
        if s in word:
            # 문자가 연속되는 경우
            # 직전애 삽입된 word의 값이 지금 value의 값과 같은 경우는 연속되기 때문에 그룹 단어다.
            if word.index(s) == len(word) - 1:
                continue
            # 이미 있는 단어인데 연속되지 않을 경우
            else:
                # 그룹 단어가 아니므로 -1
                rslt -= 1
                break
        else:
            word.append(s)

print(rslt)

- 그룹 단어의 개수를 출력하는 rslt 변수를 그룹 단어일 때 +1 해주려고 했으나, 잘 풀리지 않아서 아닐 경우 -1 해주는 것으로 코드를 짰다.

- 테스트케이스 한두개를 충족하는 코드를 짜는건 쉬웠으나, 모든 케이스를 충족하는 코드를 짜는건 쉽지 않았던 것으로 기억한다.

- 알파벳이 똑같은게 여러개 나와도 되지만 무조건 "연속"되어야 한다는 부분을 캐치하는 것이 이 문제의 핵심인 것 같다.

 

 

 

백준 채점 결과

 

댓글
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
Total
Today
Yesterday
공지사항
최근에 올라온 글