이카's
article thumbnail

www.acmicpc.net/problem/1316

 

1316번: 그룹 단어 체커

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

www.acmicpc.net


문제해석

문제 해석은 어렵지 않았다.

그룹 단어를 카운트 해야 되는데, 
조건 1) 서로 다른 단어 일 경우 카운트 +1
조건 2) 같은단어가 연속으로 나오지만, 뒤에 연속으로 나왓던 단어가 나오지 않을 경우 카운트 +1

문제 해석은 쉬운데 구현이 어려웠다.
두문자를 비교하는 조건을 체크하는건 쉬웠는데, 그 후 카운터를 어떻게 올려야 할지 몰랏다.
여러 오픈소스를 보고 횟수만큼 문자열을 비교하고 검수가 전부 맞는 경우에만 카운터+1을 했다.

문자열 구현은 규칙을 알아내기는 쉽지만 구현하는게 까다롭다. 반드시 알아야 될 문제.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
= int(input())
count = 0
for i in range(s):
    word = input()
    for j in range(len(word)-1):
        if j != len(word)-2#문자열 끝까지 비교
            if word[j] == word[j+1]: #두문자 같을때
                pass
            elif word[j] in word[j+1:]: #두문자다를때// 연속으로 나오지 않을때 체크
                break
        else#문자열 비교 후 검수가 끝나면 횟수 카운트
            count += 1
print(count)
 

위에 코드를 실행 결과

결과는 틀렸다. 이유는 문자열이 1일때 카운트 +1 을 해야 되기 때문이다,

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
= int(input())
count = 0
for i in range(s):
    word = input()
    if len(word) == 1:
        count += 1
    else:
        for j in range(len(word)-1):
            if j != len(word)-2#문자열 끝까지 비교
                if word[j] == word[j+1]: #두문자 같을때
                    pass
                elif word[j] in word[j+1:]: #두문자다를때// 연속으로 나오지 않을때 체크
                    break
            else#문자열 비교 후 검수가 끝나면 횟수 카운트
                count += 1
print(count)

실행 결과 합격!

 

반응형
profile

이카's

@Edan Cafe ☕

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!