728x90
반응형

1316번 문제

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
반응형

+ Recent posts