[백준 파이썬 1316번]그룹단어 체커★rfind() , find()함수 활용하기★VER3.0
2023. 3. 28. 18:00
728x90
반응형
VERSION 3.0
import sys
N = int(sys.stdin.readline())
res = 0
for p in range(N):
A = sys.stdin.readline().rstrip()
B = list(set(A))
res+=1
for i in B:
counts = A.count(i)
if A.rfind(i) - A.find(i) +1 != counts:
res-=1
break
print(res)
==> count() 함수와 rfind , find () 함수 사용하기
VERSION 2.0
import sys
N = int(sys.stdin.readline())
sum = N
for j in range(N):
A = list(map(str, sys.stdin.readline().rstrip()))
B = sorted(list(set(A)))
print(A)
res = []
for i in B:
count_alphabet = A.count(i)
a = A[::].index(i)
b = len(A) - 1- A[::-1].index(i)
#print(a, b)
if b-a+1 != count_alphabet:
sum-=1
break
print(sum)
VERSION 1.0
import sys
while True:
N = int(sys.stdin.readline())
if N>100 or N<1 :
print('100보다 작은 자연수를 입력하세요')
else:
break
sum =0
for i in range(N):
B=[]
A = str(sys.stdin.readline().rstrip())
#A리스트에 문자열을 문자 하나씩 리스트로 나열
B= sorted(list((set(A))))
#B객체에 A리스트의 값의 중복값을 제외시킨 리스트로 저장시킨다.
print('중복값 제외 리스트 : ', B)
for j in range(len(B)):
x =A.rfind(B[j])
#오른쪽에서 부터 A리스트내에 B[j]가 처음 나타나는 인덱스
y = A.find(B[j])
#오른쪽에서 부터 A리스트내에 B[j]가 처음 나타나는 인덱스
print("'{}'가 나타나는 오른쪽 부터의 인덱스 : ".format(B[j]),x, end = ' /// ')
print("'{}'가 나타나는 왼쪽 부터의 인덱스 : ".format(B[j]), y)
if (abs(x-y)+1) != A.count(B[j]):
#인덱스가 A내에 있는 B[j]의 개수와 다를 경우
print("그룹단어가 아닙니다.")
break
else:
if j==(len(B)-1):
sum+=1
print(sum)
★★★KEY POINT★★★
리스트.rfind('찾을 문자값') ==> 오른쪽 부터 찾을 문자값이 있는 리스트의 인덱스값 추출
리스트.rfind('찾을 문자값') ==> 왼쪽 부터 찾을 문자값이 있는 리스트의 인덱스값 추출
===>why?
worldlw 의 경우 'w'의 문자개수는 2개 'l' 문자개수는 2개이다.
x = rfind('w') ==> 인덱스 6
y = find('w') ==> 인덱스 0
abs(x-y) +1 = 7 != 'w'의 문자개수 2개
===> 다르다면 그룹단어 아니다!!!!
===> 왜 또 1을 더했는가!?
===> 'o' 단어의 x값 : 1 y값:1 x-y =0 ==> 1을더해 count값과 동일하게끔 한다.
29~30번째 줄:
j == len(B)-1 ===> j값이 range의 마지막값에 도달했을때
sum값 1더하기
728x90
반응형
'Python(백준) > 문자열' 카테고리의 다른 글
★index 활용★[Python 백준 25206 번 너의 평점은] (0) | 2023.03.28 |
---|---|
★count()함수 활용하기★★문자열 슬라이싱★[백준 파이썬 2941번 크로아티아 알파벳] (0) | 2023.03.28 |
[백준 파이썬 1157번] collections.Counter() ★ 활용단어 공부★map()함수를 통한 객체 저장법 익히기★count()함수를 통한 개수세기★VER4.0 (0) | 2023.03.28 |
★문자열 슬라이싱★[Python 백준 10988 번 팰린드롬인지 확인하기] (0) | 2023.03.28 |
★range 범위 잘 지정하기★문자열★[Python 백준 10812번 바구니바꾸기] (0) | 2023.03.28 |