https://www.acmicpc.net/problem/1316
1316번: 그룹 단어 체커
그룹 단어란 단어에 존재하는 모든 문자에 대해서, 각 문자가 연속해서 나타나는 경우만을 말한다. 예를 들면, ccazzzzbb는 c, a, z, b가 모두 연속해서 나타나고, kin도 k, i, n이 연속해서 나타나기 때
www.acmicpc.net
내 답안
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에 대해 잘 모른다면 쉽게 집합이라고 생각하면 되고,
시각적으로 좀 보고 싶다면 아래 문제를 참고하자.
백준 1159번 농구 경기 파이썬
라이브러리로 이용하면 간단한 코딩으로도 나타 낼 수 있다. 하지만 아직 덜 배웠기 때문에 지금 까지 배운 리스트 , 세트 정도로 코딩을 해봤다. list1 = [] list2 = [] n = int(input()) for i in range(n): list1
thingjin.tistory.com
'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 |