문제 : https://www.acmicpc.net/problem/1316
1316번: 그룹 단어 체커
그룹 단어란 단어에 존재하는 모든 문자에 대해서, 각 문자가 연속해서 나타나는 경우만을 말한다. 예를 들면, ccazzzzbb는 c, a, z, b가 모두 연속해서 나타나고, kin도 k, i, n이 연속해서 나타나기 때
www.acmicpc.net
Sol )
- 문자가 연속적으로 입력된다는 뜻은, 한 번 이상 문자 입력 후 다른 문자가 입력된 다음 다시 나오지 않는다는 뜻
- 길이 26의 cnt 배열 (cnt_arr) false로 초기화
- result = 0
- 단어 입력 횟수만큼 순회하면서 반복문 안에서 flag (그룹 단어인지 여부 확인용 변수)로 활용할 변수 check 선언
- 문자열을 순회하면서 cnt 배열의 문자 아스키코드 - 'a' 아스키코드 인덱스 추출
- 만약 인덱스가 바뀌면 이전 인덱스 값 true로 변경
- cnt [인덱스] 값이 true라면 1번 조건을 위배하므로 반복을 종료하고 flag( 코드에서 check ) 값에 체크해준 뒤 다음 단어에 대해 탐색
- 모든 탐색 종료시까지 조건을 충족했다면 (flag = check = true 라면) result += 1
- 최종 result 출력
소스코드 )
n = int(input())
result = 0
for i in range(n):
s = input()
alpha_cnt = [False] * 26
saved_char = ord(s[0])-ord('a')
check = True
for j in range(1,len(s)):
new_char = ord(s[j])-ord('a')
if alpha_cnt[new_char]:
check = False
break
if new_char != saved_char:
alpha_cnt[saved_char] = True
saved_char = new_char
if check:
result +=1
print(result)
'Problem Solving > boj.kr (Python)' 카테고리의 다른 글
[BOJ / 파이썬] 2292 : 벌집 (0) | 2022.03.13 |
---|---|
[BOJ / 파이썬] 1712 : 손익분기점 (0) | 2022.03.12 |
[BOJ / 파이썬] 2941 : 크로아티아 알파벳 (0) | 2022.02.26 |
[BOJ / 파이썬] 5622 : 다이얼 (0) | 2022.02.26 |
[BOJ / 파이썬] 1152 : 단어의 개수 (0) | 2022.02.26 |
댓글