BOJ/Python

백준 1316번 그룹 단어 체커 파이썬

띵지니어 2022. 12. 4. 00:15

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에 대해 잘 모른다면 쉽게 집합이라고 생각하면 되고,

시각적으로 좀 보고 싶다면 아래 문제를 참고하자.

 

https://thingjin.tistory.com/entry/%EB%B0%B1%EC%A4%80-1159%EB%B2%88-%EB%86%8D%EA%B5%AC-%EA%B2%BD%EA%B8%B0-%ED%8C%8C%EC%9D%B4%EC%8D%AC

 

백준 1159번 농구 경기 파이썬

라이브러리로 이용하면 간단한 코딩으로도 나타 낼 수 있다. 하지만 아직 덜 배웠기 때문에 지금 까지 배운 리스트 , 세트 정도로 코딩을 해봤다. list1 = [] list2 = [] n = int(input()) for i in range(n): list1

thingjin.tistory.com