본문 바로가기
코딩테스트

[Python] 백준 1316번 - 그룹 단어 체커

by 박매트 2024. 5. 23.

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

 

 

My Answer

N = int(input())
cnt = 0

def wordChecker(string): # 그룹 단어 체커인 지 확인
    check = []
    
    for s in string: 
        if s not in check: #리스트에 해당 문자가 존재하는 지 확인
            check.append(s) #없었다면 check 리스트에 담기
        elif check[-1] != s: # 해당 문자가 존재했는데, s와 마지막에 담긴 check의 값과 같지 않다면 그룹 단어 체커가 아님
            return False

    return True # 여기까지 왔다면, 그룹 단어 체커

for i in range(N):
    
    string = input() # 문자열 입력받기

    if wordChecker(string):
        cnt+=1
        
print(cnt)

 

문자가 존재하는 지 확인하고, 존재하지 않았던 문자라면 리스트에 담는다.

검사하는 문자가 리스트에 담긴(이미 존재하는 단어 중 하나) 거 라면, 마지막으로 담긴 문자와 검사하는 문자랑 비교한다.

 

마지막으로 담긴 문자와 같지 않다면, 기존에 나온 단어가 나온 것이므로 False

 

다른 사람 답

n = int(input())
for i in range(n):
    word = list(input())
    crite = []
    crite.append(word[0])
    for i in range(len(word)-1):
        if word[i] == word[i+1]:
            continue
        else:
            if word[i+1] in crite:
                n = n -1
                break
            crite.append(word[i+1])
print(n)

 

거의 비슷하게 접근한 것 같다.

 

Point

 

리스트 안에 해당 요소가 존재하는 지 알려면

요소 in 리스트 이름 -> true, false