728x90
반응형
1. 문제 설명
2. 풀이과정
- 전체 테스트 케이스의 개수를 입력받는다. N = int(input())
- 그룹 단어의 개수를 세어줄 변수를 생성하고 초기화한다. count = 0
- 전체 테스트 케이스 횟수만큼 반복한다. for _ in range(N)
- 각 테스트 케이스 별로 그룹 단어를 판별할 문자열을 입력받는다. word = input()
- 입력받은 문자열을 단어로 분리해 저장할 리스트를 생성한다. li = list()
- 각 문자별 횟수를 저장할 딕셔너리를 생성한다. d = dict()
- 입력받은 문자열의 문자를 각각 추출한다. for i in word
- 만약 추출한 문자가 딕셔너리에 있으면 if (i in d)
- 딕셔너리 값을 1 증가시킨다. d[i] += 1
- 반면에 추출한 문자가 처음이면 else
- 딕셔너리에 추가하고 값을 1로 만들어준다. d[i] = 1
- 매번 추출한 문자는 리스트에 추가한다. li.append(i)
- 그룹 단어인지 판별할 변수를 생성하고 True로 초기화한다. state = True
- 딕셔너리의 키를 하나씩 추출한다. for i in d.keys()
- 문자열의 인덱스를 저장해 줄 리스트를 생성한다. res = list()
- 딕셔너리 키의 값만큼 반복한다. for _ in range(d[i])
- 문자를 저장한 리스트에서 추출한 딕셔너리 값의 인덱스를 찾아 그 값을 추가한다. res.append(li.index(i))
- 추가한 인덱스 위치의 값을 다음 인덱스 위치를 찾기 위해 0으로 바꿔준다. li[li.index(i)] = '0'
- 인덱스 값을 저장한 리스트의 길이가 2보다 크면 if (len(res) >= 2)
- 각 값별로 차이를 구하기 위해 리스트의 길이보다 1 작은 횟수만큼 반복한다. for i in range(1, len(res))
- 만약 인접한 리스트의 두 원소의 값 차이가 1이 아니면 if (res[i] - res[i - 1] != 1)
- 중복된 문자가 떨어져 있다는 뜻이므로 그룹 단어가 아니다. state = False
- 그룹 단어가 아닌 것으로 판별되었으므로 반복문을 종료한다. break
- 딕셔너리의 모든 키에 대한 반복문을 마치고 만약 그룹 단어라고 판별되면 if (state)
- 그룹 단어의 개수를 1 증가시킨다. count += 1
- 모든 테스트 케이스에 대해 판별이 끝나면 그룹 단어의 개수를 출력한다. print(count)
반응형
3. 소스코드
N = int(input())
count = 0
for _ in range(N):
word = input()
li = list()
d = dict()
for i in word:
if (i in d):
d[i] += 1
else:
d[i] = 1
li.append(i)
state = True
for i in d.keys():
res = list()
for _ in range(d[i]):
res.append(li.index(i))
li[li.index(i)] = '0'
if (len(res) >= 2):
for i in range(1, len(res)):
if (res[i] - res[i - 1] != 1):
state = False
break
if (state):
count += 1
print(count)
728x90
반응형
'백준' 카테고리의 다른 글
[백준] 2798번 : 블랙잭 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.07.03 |
---|---|
[백준] 1463번 : 1로 만들기 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.07.03 |
[백준] 5622번 : 다이얼 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.07.03 |
[백준] 10828번 : 스택 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.07.02 |
[백준] 9012번 : 괄호 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.07.02 |
[백준] 2292번 : 벌집 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.07.02 |
[백준] 15596번 : 정수 N개의 합 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.07.02 |
[백준] 1978번 : 소수 찾기 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.07.01 |