[알고리즘] 백준 1316 : 그룹 단어 체커 - S5

eternal moment·2023년 6월 4일
0

2023.06.04 풀이

import sys
input=sys.stdin.readline

n=int(input())
cnt=0
for _ in range(n):
    s=input().rstrip()
    arr=[0]*26
    for i in range(0, len(s)):
        if arr[ord(s[i])-97]==0 or s[i]==s[i-1]:
            arr[ord(s[i])-97]+=1
        else:
            cnt+=1
            break

print(n-cnt)
  • 그룹단어가 아닌 것을 카운트함
  • rstrip() 유의하기
  • s[i]==s[i-1]에서 i가 0인 경우에 s[i-1]은 배열 밖의 범위이므로 맞는 풀이인지 헷갈렸는데,
    i가 0인 경우에는 이 arr[ord(s[i])]==0 의 조건을 만족하게 됨.


다른 풀이

n = int(input())
res = 0
j = 0
for _ in range(n):
	word = input()
	for i in range(len(word) - 1):
		if word[i] == word[i + 1]:
			pass
		else:
			if word.find(word[i],i+1) != -1:
				res += 1
				break
print(n - res)
  • 그냥 앞뒤를 비교하는 풀이도 생각해보기
n=int(input())
k=n
for _ in range(n):
    a=set()
    s=input()
    a.add(s[0])
    for i in range(len(s)-1):
        if s[i]!=s[i+1]:
            if(s[i+1] in a):
                k-=1
                break
            else:
                a.add(s[i+1])
print(k)
  • set에 넣고, 앞 뒤가 다른 경우에 set에도 없으면.

0개의 댓글