1) 사이트
2) 문제
aaabbbccc같이 같은 단어가 서로 붙어있으면 그룹 단어라고 인식합니다.
하지만 aaabbbccca같이 그룹에서 동 떨어진 단어가 있으면 그룹 단어라고 인식하지 않습니다.
3) 파이썬 코드
result=0
flag=0
no=0
number=int(input())
for i in range (0,number):
sentence=input()
for i in sentence:
each=sentence.count(i)
#해당 알파벳이 1개이면 다음으로 빨리 넘어간다.
if each==1:
continue
else:
#처음 위치 찾기
flag=sentence.find(i)
#갯수만큼 붙어있는지 확인
for j in range(1,each):
if sentence[flag+j]!=i:
no=1
break;
else:
continue;
if no==1:
no=0
else:
result=result+1
no=0
print(result)
3-1) 선수 지식
파이썬 코드를 이해하기 위해 알아야 할 선수 지식이 있습니다.
1. 찾고자하는 단어가 어느 인덱스부터 시작하는지 찾는 법
-> 문자열.find("특정 문자열")
3-2) 설명
1. 사용할 변수 초기화한다.
result=0
flag=0
no=0
result : 최종 결과값을 저장하는 변수
flag : 특정 알파벳이 처음 나타나는 인덱스 체크하는 변수
no : 0일 때는 그룹 단어로 인정하고, 1일 때는 그룹 단어로 인정하지 않는다를 체크하는 변수
2. 몇 개의 문장을 받을 것인지 입력 받는다.
number=int(input())
3-1. 입력한 횟수만큼 문장을 입력한다.
for i in range (0,number):
sentence=input()
3-2. 1개의 문장에 대해 그룹 단어인지 체크한다.
for i in range (0,number):
sentence=input()
for i in sentence:
each=sentence.count(i)
#해당 알파벳이 1개이면 다음으로 빨리 넘어간다.
if each==1:
continue
else:
#처음 위치 찾기
flag=sentence.find(i)
[0]인덱스부터 특정 알파벳이 몇 개인지 확인하고, 1개이면 다음 알파벳을 확인한다.
만약 1개 이상의 알파벳이 나타난다면, 해당 알파벳의 처음 위치를 찾는다.(해당 갯수만큼 그룹지고 있나 확인하기 위함이다.)
3-3. 해당 갯수만큼 붙어있는지 확인한다. 단, 시간을 줄이기 위해 flag(처음위치)+1부터 확인한다. (range를 1부터 시작시키는 이유)
for i in range (0,number):
sentence=input()
for i in sentence:
each=sentence.count(i)
#해당 알파벳이 1개이면 다음으로 빨리 넘어간다.
if each==1:
continue
else:
#처음 위치 찾기
flag=sentence.find(i)
#갯수만큼 붙어있는지 확인
for j in range(1,each):
if sentence[flag+j]!=i:
no=1
break;
else:
continue;
알파벳의 숫자만큼 돌리면서 만약 다른 문자가 나온다면 그룹 단어가 아니라고 판단해 no=1로 변경해준다.
4. 한 문장이 다 돌아가면 no를 체크해 0이면 result값을 1 증가시키고, 다음 문장을 체크한다.
if no==1:
no=0
else:
result=result+1
no=0
다음 문장 체크하기 위해 no=0으로 초기화 해준다.
5. 결과값을 출력한다.
print(result)
4) c언어 코드
아직~
나누고 싶은 의견이 있다면 댓글로 달아주세요 ^_^
끝!
'알고리즘 > 백준' 카테고리의 다른 글
2292번 벌집 (0) | 2021.05.30 |
---|---|
1712번 손익분기점 (0) | 2021.05.29 |
2941번 크로아티아 알파벳 (0) | 2021.05.23 |
5622번 다이얼 (0) | 2021.05.23 |
2908번 상수 (0) | 2021.05.19 |