Python/algorithm

그룹단어체커 [22.09.04]

baecode 2022. 9. 4. 16:05
반응형

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

 

1316번: 그룹 단어 체커

그룹 단어란 단어에 존재하는 모든 문자에 대해서, 각 문자가 연속해서 나타나는 경우만을 말한다. 예를 들면, ccazzzzbb는 c, a, z, b가 모두 연속해서 나타나고, kin도 k, i, n이 연속해서 나타나기 때

www.acmicpc.net

 

나의 풀이

x = int(input()) 
group_word = 0
for _ in range(x):
  word = input() #전달받는 단어
  error = 0 
  for idx in range(len(word)-1):
    if word[idx] != word[idx+1]: # ex) happy 에서 h와 a가 같지않을경우
      new_word = word[idx+1:]    # new_word에 appy 라는 새로운 단어를 생성
      if word[idx] in new_word:  # h가 appy에 포함 되었을경우 
        error += 1               # 에러 발생 ( 그룹단어가 아님 )
  if error == 0:                 # 그룹단어일 경우 0
    group_word += 1

print(group_word)

###############
## 개선 후 코드 ##

x = int(input())

for _ in range(x):
  word = input()
  for idx in range(len(word)-1):
    if word[idx] != word[idx+1] and word[idx] in word[idx+1:]:
        x -= 1
print(x)

 

루키의 풀이

n = int(input())

cnt = n

for i in range(n):
    s = input() # 전달받는 단어
    for j in range(len(s) - 1): # 알파벳 1개씩 돌면서 검사
        if s.find(s[j]) > s.find(s[j+1]):
            cnt -= 1
						break
print(cnt)
반응형