Notice
Recent Posts
Recent Comments
Link
«   2025/06   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
Archives
Today
Total
관리 메뉴

행복한 개구리

백준 21.11.25. 1316 - 그룹 단어 체커 본문

Algorithm/BaekJoon

백준 21.11.25. 1316 - 그룹 단어 체커

HappyFrog 2021. 11. 25. 02:39

n = int(input())
result = 0

for _ in range(n):
    word = input().lower()
    error = 0

    for idx in range(len(word)-1):
        if word[idx] != word[idx+1]:
            leftPart = word[idx+1:]
            if leftPart.count(word[idx]) != 0:
                error += 1
    if error == 0:
        result += 1

print(result)
  • 우선 처음에 입력받은 수만큼 반복을 돌리는 구조로 진행합니다.
  • 그리고 그룹단어의 개수를 저장할 result 변수를 미리 생성합니다.
  • 처음에 입력받은 수만큼 단어를 입력받습니다.
    • 여기서 error라는 변수를 설정해주는데 error변수는 그룹단어가 아닌 것을 찾아내기 위한 변수입니다.
      • 편의상 int값으로 했지만 str이던 bool이던 상관없습니다.
  • 중첩 for반복문으로 입력받은 단어를 인덱스의 순서대로 탐색하기 시작합니다.
  • 그러다가 word[idx]의 값이 word[idx+1]의 값과 다르다면 leftPart라는 변수에 단어의 남은 부분을 저장합니다.
    • 따라서 leftPart는 word[idx+1:]이 됩니다 => 'word[idx+1]부터 끝까지' 라는 뜻
  • 그리고 남은부분에서 이미 나온 글자가 나왔는지 검색을 해야합니다.
    • 따라서 count메서드를 사용하여 leftPart에서 word[idx]와 일치하는 요소가 몇개나 있는지 살펴봅니다.
    • 만약 그 값이 0이 아니라면 (=> 존재한다면)
    • error의 값을 1 늘려줍니다.
      • bool값이라면 error를 처음에 false로 두고 이 때 True로 바꿔줘도 되며, str이라면 초기에 설정해둔 str값과 다른 값을 지정해주면 됩니다.
  • 마지막으로 error값이 초기값과 다른지 살펴봅니다.
    • 초기값과 다르지 않다면 에러가 나지 않았다는 뜻이므로 그룹단어라는 뜻입니다.
    • 그러므로 result에 1을 더해주어 그룹단어의 개수가 1개 늘었음을 표시해줍시다.
  • 이 모든 반복문이 끝나고 난 뒤 총계된 result의 값을 출력해주면 됩니다.