1. 문제 해설
그룹 단어 찾기
그룹 단어란 단어에 존재하는 모든 문자에 대해서, 각 문자가 연속해서 나타나는 경우만을 말한다. 예를 들면, ccazzzzbb는 c, a, z, b가 모두 연속해서 나타나고, kin도 k, i, n이 연속해서 나타나기 때문에 그룹 단어이지만, aabbbccb는 b가 떨어져서 나타나기 때문에 그룹 단어가 아니다.
2. 작성 코드
def groupWord(word):
char_list = []
char_list.append(word[0])
for i in range(len(word)-1):
if word[i] == word[i+1]:
continue
else:
if word[i+1] in char_list:
return False
else: char_list.append(word[i+1])
return True
num = int(input())
word_list = []
for i in range(num):
word_list.append(input())
word_count = 0
for word in word_list:
if groupWord(word):
word_count+=1
else: continue
print(word_count)
3. 다른 사람들의 코드
result = 0
for i in range(int(input())):
word = input()
if list(word) == sorted(word, key=word.find):
result += 1
print(result)
다른 사람들은 word를 list로 만든 후 정렬 method sorted()를 이용하여 word list와 정렬 후가 같으면 그룹 단어로 정의했다.
이 때 sorted() 함수의 정렬조건인 key 값으로 word.find를 사용했는데 이는 같은 문자가 처음 나오는 위치의 index 값을 매개변수로 사용한다는 의미이다.
그러므로 word.find를 key 값으로 사용하면 같은 문자들이 연속해서 나올 경우 순서가 바뀌지 않지만 같은 문자가 비연속적으로 나오는 경우 word.find를 key 값으로 사용하기에 sorted() 정렬 후에는 문자별로 모이게 된다.
4. 오늘의 배운 것
- 정렬 메소드 sort()
sort() 메소드는 list에 포함된 method로 list.sort()를 이용해 사용할 수 있다.
- 정렬 메소드 sorted()
sorted() 메소드는 list 뿐만이 아니라 iterable한 자료형을 받아서 새로운 list로 만들어 준다.
sorted( iterable한 자료형 , key 매개변수 , reverse = True or False)
key매개변수를 통해 정렬기준을 정할 수 있다.
- String의 find 메소드
string.find(sub_string, start, end) 의 형식으로 사용된다
이는 start 지점 이후 sub_string이 처음으로 나타나는 지점의 index를 출력한다.
'Algorithm & Data Structure' 카테고리의 다른 글
[백준] 구간성분(10840번) - 해싱 (0) | 2022.10.10 |
---|---|
[Today I Learned] 알고리즘 기초와 배열 (0) | 2022.09.28 |
txt 작업 ( readlines 메소드 / 공백 제거 ) (1) | 2022.09.21 |
for문 사용시에 list 자료형과, set 자료형의 차이 (0) | 2022.09.17 |
[제어문] 친화수, 완전수 구하기 (4) | 2022.09.14 |