백준 #12 (구현) - 그룹 단어 체커

ims·2021년 6월 26일
0

백준 문제풀이

목록 보기
12/17

📌 문제

문자열을 순회했을 때, 해당 문자가 전에 나온 문자가 아닌 문자열의 갯수를 구하라.
( 단, 같은 문자가 연속적으로 나왔을 때는 전에 나온 문자로 치지 않는다 )

ex)

aaabbaaccc (x)
aabbbcc (o)

📌 아이디어

문자열을 돌면서 해당 문자를 set 에 저장한다.
만약 해당 문자가 set에 값이 있을 때,
1. 전의 값과 값이 동일하다면 현재 연속적이라는 의미이므로 통과다.
2. 만약 전의 값과 값이 동일하지 않다면 이미 나왔던 문자라는 뜻이므로 통과를 하지 못하고 종료해준다.

만약 set에 값이 없다면 추가해준다.

🔥 실수

🤡 1. s[i]

if s[i] not in hash_set:
# 을 해야 하는데
if s not in hash_set:
# 을 해버렸다.

🤡 2. not in

if s[i] not in~
# 이렇게 해야 하는데
if not s[i] in ~
# 이렇게 헷갈렸다.

📌 코드

n = int(input())

result = 0

for _ in range(n):
    s = input()
    hash_set = set()
    flag = True
    for i in range(len(s)):
        if s[i] not in hash_set:
            hash_set.add(s[i])
            i += 1
        elif s[i] in hash_set:
            if s[i-1] == s[i]:
                i+=1
            elif s[i-1] != s[i]:
                flag=False
                break
    if flag:
        result+=1

print(result)

📌 다른 사람 풀이

slicing을 이용해서 더 간편하게 풀이한 것 같다.

일치하지 않을 때, 뒤의 문자안에 있다면 빼준다.

n=int(input())
cnt=0
for _ in range(n):
    word=input()
    for i in range(len(word)-1):
        if word[i]!=word[i+1]:
            if word[i] in word[i+1:]:
                n-=1
                break
print(n)

https://velog.io/@wjdtmdgml/%EB%B0%B1%EC%A4%80%EA%B7%B8%EB%A3%B9-%EB%8B%A8%EC%96%B4-%EC%B2%B4%EC%BB%A41316%EB%B2%88Python%ED%8C%8C%EC%9D%B4%EC%8D%AC%EA%B5%AC%ED%98%84%EB%AC%B8%EC%9E%90%EC%97%B4

profile
티스토리로 이사했습니다! https://imsfromseoul.tistory.com/ + https://camel-man-ims.tistory.com/

0개의 댓글