반응형
https://www.acmicpc.net/problem/1316
내 답안
N = int(input())
check = 0
for i in range(N):
x = input()
group = [x[0]]
for j in range(1, len(x)):
if group[-1] != x[j]:
group.append(x[j])
if len(set(group)) == len(group):
check += 1
print(check)
Review
aabbbcb로 예시를 들어 설명하자면, 그룹리스트 맨 앞에 a를 넣는다. group = ['a']
이후 for 문을 이용하여 하나씩 넣어 볼 것이다.
그룹 리스트에 맨뒤에 있는 단어와 다음 들어올 단어가 같다면 그 두 단어는 그룹이라는 의미이니 삽입하지 않는다.
'b'는 맨뒤에 있는 단어와 다음 들어올 단어가 다르니 삽입해준다. group = ['a', 'b']
마찬 가지로 순서대로 for 문을 실행시키면 group = ['a', 'b', 'c', 'b']가 된다.
여기서 문제 조건에 해당하는 것을 읽어 보면
aabbbcb는 b가 떨어져서 나타나기 때문에 그룹 단어가 아니다.
즉 group 리스트에는 중복된 알파벳이 없어야 한다.
따라서 set group과 list group의 길이가 다르다면 check 단어가 아니다.
len(set(group)) = 3, len(group) = 4
set에 대해 잘 모른다면 쉽게 집합이라고 생각하면 되고,
시각적으로 좀 보고 싶다면 아래 문제를 참고하자.
반응형
'BOJ > Python' 카테고리의 다른 글
백준 25305번 커트라인 파이썬 (0) | 2023.01.19 |
---|---|
백준 10814번 나이순 정렬 파이썬 (0) | 2023.01.18 |
백준 5585번 거스름돈 파이썬 (0) | 2022.12.03 |
백준 1541번 잃어버린 괄호 파이썬 (0) | 2022.12.02 |
백준 2193번 이친수 파이썬 (2) | 2022.09.20 |