파이썬 python 그룹 단어 체커 [BOJ 1316]
1316번: 그룹 단어 체커
그룹 단어란 단어에 존재하는 모든 문자에 대해서, 각 문자가 연속해서 나타나는 경우만을 말한다. 예를 들면, ccazzzzbb는 c, a, z, b가 모두 연속해서 나타나고, kin도 k, i, n이 연속해서 나타나기 때문에 그룹 단어이지만, aabbbccb는 b가 떨어져서 나타나기 때문에 그룹 단어가 아니다. 단어 N개를 입력으로 받아 그룹 단어의 개수를 출력하는 프로그램을 작성하시오.
www.acmicpc.net
그룹 단어의 개수를 구하기 위해 우선 그룹 단어인지 판별하는 함수를 만들었습니다.
- 그룹 단어 판별 함수 만들기
def is_group(string):
checker = set()
tempword = string[0]
for i in range(1, len(string)):
if string[i-1] == string[i]:
pass
else:
tempword += string[i]
for letter in tempword:
if letter not in checker:
checker.add(letter)
else:
return False
return True
먼저 string을 받아와서 같은 문자가 연속해서 나올 때 그 문자를 하나만 남겨놓고, 결과값을 임시로 다른 문자열(tempword)에 담습니다.
tempword 안에서 다시 반복문을 사용하여 집합 자료형 변수(checker)에 글자를 하나씩 넣고, checker 내에 글자가 있다면 False를 반환합니다. False가 반환되지 않으면 True를 반환합니다.
- 그룹 단어라면 - True, 그룹 단어가 아니라면 - False
- 그룹 단어의 개수 구하기
N = int(input())
counter = 0
for _ in range(N):
word = input()
if is_group(word) == True:
counter += 1
print(counter)
단어의 개수 N을 받아오고, N을 범위로 해서 반복문을 작성합니다. 그 안에서 새로 단어들을 input()으로 받아오고, is_group함수를 사용하여 그룹 단어임이 판별되면 counter를 하나씩 늘려줍니다.
전체 코드
def is_group(string):
checker = set()
tempword = string[0]
for i in range(1, len(string)):
if string[i-1] == string[i]:
pass
else:
tempword += string[i]
for letter in tempword:
if letter not in checker:
checker.add(letter)
else:
return False
return True
N = int(input())
counter = 0
for _ in range(N):
word = input()
if is_group(word) == True:
counter += 1
print(counter)
'알고리즘 문제풀이 (파이썬) > BOJ (Baekjoon Online Judge)' 카테고리의 다른 글
특정 조건 안에서 문자열 개수 세기 [BOJ 2941] 크로아티아 알파벳 (파이썬 python) (0) | 2020.01.22 |
---|---|
한수의 개수 구하기 [BOJ 1065] 한수 (파이썬 python) (0) | 2020.01.20 |
파이썬 입력이 끝날 때까지 받아오는 방법 [BOJ 10951] A+B - 4 (파이썬 python EOF EOFError) (0) | 2020.01.17 |