백준 1316번 파이썬

몽뭉뭉·2023년 12월 30일
0

백준 코딩테스트

목록 보기
4/5

num=int(input())
for i in range(num):
    a=list(input())
    alphabet={}
    for i in a:
        if i not in alphabet:
            alphabet[i]=1

풀다가 포기한 코드이다...
발상을 어떻게 했냐면 input인 a를 리스트로 만들고 각 알파벳이 나오는 횟수를 alphabet 딕셔너리에다 더하려고 했다. 기존에 나왔던게 다시 나오는 경우 처리를 "앞서 나온 경우 외에"로 처리해야 된다고 생각했는데 어떻게 할지에 대한 감히 도저히 잡히지 않았다.

[풀이코드]

N = int(input())
cnt = N

for i in range(N):
    word = input()
    for j in range(0, len(word)-1):
        if word[j] == word[j+1]:
            pass
        elif word[j] in word[j+1:]:
            cnt -= 1
            break

print(cnt)

참고 블로그

[몰랐던점]
1. if와 elif 만으로 조건을 구성하는 생각을 못했다.이게 위에서 말한 "앞서 나온 경우 외에"의 사용법인것 같다.
2. pass와 break의 사용법을 잘 몰랐다. 이것이 더해져야 위에서 말한 "앞서 나온 경우 외에"의 사용법이 될 것이다.
3.cnt를 줄여간다는 생각을 못해본것 같다. 매번 더하는 것에 대해서만 생각했는데 for 문으로 input의 갯수가 결정될 때 조건에 해당 되지 않는 count를 제외할 때 좋은 방법인 것 같다

0개의 댓글