[백준] 1316번 - 그룹 단어 체커 파이썬(Python)

2024. 11. 26. 21:02·console.log("What ? " + Cord);/코딩테스트
728x90
반응형

 

백준 1316번 문제: 그룹 단어 체커


문제 설명

  1. 그룹 단어란, 단어에 포함된 문자들이 각각 연속해서 나타나는 경우를 말합니다.
    • 예: happy, new, year는 그룹 단어.
    • 예: abc, aab는 그룹 단어.
    • 예: aabbcc, abca는 그룹 단어가 아님 (abca에서 a가 떨어져 다시 등장).
  2. 입력으로 주어진 단어들이 그룹 단어인지 판단하고, 그룹 단어의 개수를 출력합니다.

문제 해결 전략

  1. 문자 등장 순서 추적:
    • 단어를 한 글자씩 순회하며, 이미 등장한 문자와 현재 문자가 연속적인지 확인합니다.
    • 이전 문자와 같으면 계속 진행.
    • 이전 문자와 다르지만 이미 등장했던 문자라면 그룹 단어가 아님.
  2. 각 단어를 독립적으로 처리:
    • 주어진 단어마다 독립적으로 판단.
    • 결과적으로 그룹 단어인 단어의 개수를 세면 됩니다.

코드 구현

def is_group_word(word):
    seen = set()  # 등장한 문자를 저장할 집합
    prev_char = None  # 이전 문자를 저장

    for char in word:
        if char != prev_char:  # 이전 문자와 다를 때
            if char in seen:  # 이미 등장했던 문자면 그룹 단어 아님
                return False
            seen.add(char)  # 새로운 문자를 추가
        prev_char = char  # 이전 문자를 갱신

    return True  # 모든 문자가 조건을 만족하면 그룹 단어

# 입력 처리
n = int(input())  # 단어 개수
count = 0

for _ in range(n):
    word = input()
    if is_group_word(word):  # 그룹 단어라면 카운트 증가
        count += 1

print(count)

코드 설명

  1. is_group_word 함수:
    • seen 집합:
      • 등장했던 문자를 저장합니다.
    • prev_char 변수:
      • 현재 문자와 이전 문자가 연속인지 판단하는 데 사용합니다.
    • 문자 순회 중:
      • 이전 문자와 다르고, 이미 등장한 문자라면 그룹 단어가 아님.
      • 새로운 문자는 seen 집합에 추가합니다.
  2. 단어 입력 및 판별:
    • 주어진 n개의 단어를 하나씩 판별.
    • 그룹 단어라면 count를 증가시킵니다.
  3. 결과 출력:
    • 그룹 단어의 총 개수를 출력합니다.

입출력 예시

입력:

3
happy
new
year

출력:

3

입력:

4
aba
abab
abcabc
a

출력:

1

 

풀이 과정:

  1. aba: a → b → a (떨어진 a가 다시 등장 → 그룹 단어 아님).
  2. abab: a → b → a (떨어진 a가 다시 등장 → 그룹 단어 아님).
  3. abcabc: a → b → c → 다시 a 등장 (그룹 단어 아님).
  4. a: 한 글자이므로 그룹 단어.

시간 복잡도

  • 단어 개수: n
  • 단어의 평균 길이: m
  • 각 단어를 순회하므로 전체 시간 복잡도는 O(n⋅m)

자주 하는 실수

  1. 이미 등장한 문자를 확인하지 않음:
    • 떨어진 문자가 다시 등장할 경우를 확인하지 않으면 틀린 결과가 나옵니다.
  2. 이전 문자와 연속된 경우를 놓침:
    • 이전 문자와 연속된 경우는 문제없으므로 조건을 명확히 처리해야 합니다.

 

728x90
반응형
저작자표시 (새창열림)

'console.log("What ? " + Cord); > 코딩테스트' 카테고리의 다른 글

[백준] 1018번 - 체스판 다시 칠하기 파이썬 (Python)  (1) 2024.11.29
[백준] 24262번 - 알고리즘의 수행 시간 1 파이썬 (Python)  (0) 2024.11.27
[백준] 2869번 - 달팽이는 올라가고 싶다 파이썬(Python)  (0) 2024.11.26
[백준] 1193번 분수찾기 파이썬(Python)  (0) 2024.11.26
[백준] 1157번 BAEKJOON 단어 공부 파이썬(Python)  (0) 2024.11.25
'console.log("What ? " + Cord);/코딩테스트' 카테고리의 다른 글
  • [백준] 24262번 - 알고리즘의 수행 시간 1 파이썬 (Python)
  • [백준] 2869번 - 달팽이는 올라가고 싶다 파이썬(Python)
  • [백준] 1193번 분수찾기 파이썬(Python)
  • [백준] 1157번 BAEKJOON 단어 공부 파이썬(Python)
Once In A Lifetime
Once In A Lifetime
안녕하세요 :)
  • Once In A Lifetime
    한번사는인생
    Once In A Lifetime
  • 전체
    오늘
    어제
    • 분류 전체보기 (101)
      • console.log("What ? " + Cor.. (59)
        • 정보처리기사 (0)
        • Java (26)
        • DB (1)
        • Python (6)
        • JavaScript (1)
        • eclipse (3)
        • RPA (3)
        • 개발 공부 (5)
        • 코딩테스트 (9)
        • POJECT_DAILY (4)
        • PORTFOLIO (1)
      • 나의 일상 (37)
        • 부자처럼 생각하고 행동하라 (5)
        • 세상 돌아가는 이야기 (4)
        • ENGLISH (21)
        • 나의 롤모델 (3)
        • 주식공부 (2)
        • 독서 (1)
      • Others (4)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • ▶ Naver Blog
    • ▶ Git hub
    • ▶ 개발자 관련 사이트
  • 공지사항

  • 인기 글

  • 태그

    동기부여
    Python
    1일1코딩
    java연산자
    코딩테스트
    GitHub
    티스토리챌린지
    Java Programming
    코딩테스트연습
    영어회화공부
    개발일기
    일상영어회화
    영어회화독학
    오블완
    java기초
    영어공부
    코딩문제풀이
    Git
    java
    파이썬
  • 최근 댓글

  • 최근 글

  • 반응형
  • hELLO· Designed By정상우.v4.10.3
Once In A Lifetime
[백준] 1316번 - 그룹 단어 체커 파이썬(Python)
상단으로

티스토리툴바