[BOJ][Python][실5][1316] 그룹 단어 체커

문제 링크

문제링크

첫 번째 풀이

정답코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
import sys
from bisect import bisect_left, bisect_right

# sys.stdin = open("input.txt", "r")

n = int(input())
arr = sys.stdin.read().split('\n')
del arr[-1]
ans = 0
for s in arr:
    visited = [False] * 26
    flag = True
    for i in range(len(s)):
        index = ord(s[i]) - ord('a')
        if not visited[index]:
            visited[index] = True
        elif i > 0 and s[i - 1] == s[i]:
            continue
        else:
            flag = False
    if flag:
        ans += 1

print(ans)

두 번째 풀이

정답코드

각 문자가 처음 등장한 위치를 기준으로 정렬을 합니다. ‘cba’를 처음 등장하는 위치를 기준으로 정렬하면 c는 0인덱스에서 등장하기 때문에 제일 처음에 오게됩니다.

같은 문자가 뭉쳐있다면 그대로 출력될 것이고, 아니라면 뭉쳐진 상태로 출력됩니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
import sys
from bisect import bisect_left, bisect_right

# sys.stdin = open("input.txt", "r")

result = 0
for i in range(int(input())):
    word = input()
    # print(list(word))
    # print(sorted(word, key=word.find))
    if list(word) == sorted(word, key=word.find):
        result += 1
print(result)

'''
['a', 'b', 'a']
['a', 'a', 'b']
['a', 'b', 'a', 'b']
['a', 'a', 'b', 'b']
['a', 'b', 'c', 'a', 'b', 'c']
['a', 'a', 'b', 'b', 'c', 'c']
['a']
['a']
'''

Success Notice: 수고하셨습니다. :+1:

Leave a comment