백준 1316번
최종 제출 코드
number = int(input())
count = 0
for j in range(number):
word = input()
lists = list(word)
lists.sort()
result = []
if len(set(lists))==len(lists):
count +=1
else:
for i in range(len(lists)):
if lists.count(lists[i]) > 1:
joint = lists[i]*(lists.count(lists[i]))
result.append(joint)
result2 = list(set(result))
k=0
for i in range(len(result2)):
if result2[i] in word:
k+=1
if k==len(result2):
count +=1
print(count)
if: 단어가 모두 다른 알파벳으로 구성된 경우를 판별
else: 단어 내에 중복되는 알파벳이 있는 경우를 판별
중복되는 알파벳이 있을 경우, 해당 알파벳은 반드시 단어 안에 연속되게 나타나야 한다.
ex) 단어 내에 a가 3개 존재한다면, 단어 내에는 반드시 aaa의 형태로 나타나야 한다.
다른 사람이 작성한 코드
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)
- 단어 내에 중복되는 알파벳이 있는 경우, 해당 알파벳은 반드시 단어 안에 연속되게 나타나야 함을 나와는 다른 방법으로 해석
내 코드: 같은 알파벳으로 구성된 문자열이 단어 안에 나타나야 한다
위의 코드: 똑같은 알파벳이 떨어져서 존재하지 않으면 된다
- 위와 같이 해석하면 내 코드처럼
if문으로 분류할 필요도 없고, 코드도 훨씬 간단해진다
count 변수도 0이 아니라 입력받은 문자열의 길이부터 시작하는 점이 새로움