본문 바로가기
I am a developer

백준 / Python / 1316 / 그룹 단어 체커 / 문제풀이 / 상세설명

by Echinacea 2023. 5. 22.
반응형

 

 

 

 

문제 설명

 

 

문제의 포인트

  • 갈수록 문제를 푸는 방법이 다양해지니 본인에게 맞는 풀이법을 이용하면 되겠다.
  • lstrip 함수를 이용하면 이 문제를 훨씬 간단하게 풀 수 있다.

 

 

 

문제 풀이 방법

 

 

문제를 풀면서 print 문을 이용해 내가 원하는 값이 잘 나오고 있는지 꼼꼼히 체크해가며 풀어야 하는 문제이다.



  1. 첫 줄에는 다음에 입력할 줄의 갯수를 입력해준다.
N = int(input())

 

 

 

 

2. 한줄한줄 입력한 단어를 모두 살핀 후 출력값을 내야하므로 한 리스트에 모두 담아준다.

wordList = []
for i in range(N):
    word = input()
    wordList.append(word)

 

 

 

3. wordList 내의 단어 중 연속된 단어의 갯수를 세기 위해 count 변수를 넣는다.

cnt = 0

 

 

 

 

4. wordList 내의 단어들을 돌려줘야하니 wordList로 for문을 짜준다.

for i in wordList:

 

 

 

 

5.  miniWord라는 변수에 단어에 쓰인 모든 알파벳을 중복 없이 한 개씩만 담을 것이다.

miniWord = []
    for j in i:
        if j not in miniWord:
            miniWord.append(j)

 

 

 

 

6. miniWord 에 담긴 알파벳과 입력한 단어(word)를 비교해 앞에서부터 알파벳을 거른다. 이 때, lstrip을 활용해 앞에 나온 알파벳이 새로 뒤에도 나온다면 사라지지 않도록 막아줘야 한다.
알파벳이 순서대로 다 걸러졌는데 word에 알파벳이 남았다면 앞에 나왔던 단어이므로, len(i)가 0인지 아닌지를 구분해 카운트를 세면 된다.

for k in range(len(miniWord)):
        i = i.lstrip(i[0])
        if len(i) == 0:
            cnt += 1

 

 

 

 

7. 마지막으로 cnt 값을 print해주면 된다.

print(cnt)

 

 

 

 

정답 코드

N = int(input())

wordList = []
for i in range(N):
    word = input()
    wordList.append(word)

cnt = 0
for i in wordList:
    miniWord = []
    for j in i:
        if j not in miniWord:
            miniWord.append(j)
    for k in range(len(miniWord)):
        i = i.lstrip(i[0])
        if len(i) == 0:
            cnt += 1

print(cnt)
반응형

댓글