본문 바로가기
짜잘IT

22.09.06 백준풀이

by 정람지 2022. 9. 6.

< 백준 2941번 크로아티아 알파벳>

from sys import stdin
Nlist = list(stdin.readline()) # \n 하나 더  있는 거  조심

newList = list( 1 for i in range(len(Nlist)))
result = 0
for i in range(len(Nlist)-1):
    if newList[i]== 0 :
        pass
    else:
        if Nlist[i] == "c":
            if Nlist[i+1] == "=": # c=
                result += 1
                newList[i+1] = 0
            elif Nlist[i+1] == "-": # c-
                result += 1
                newList[i+1] = 0
        if Nlist[i] == "d":
            if Nlist[i+1] == "z": # dz=
                result += 1
                newList[i+1] = 0
                newList[i+2] = 0
            elif Nlist[i+1] == "-": # d-
                result += 1
                newList[i+1] = 0
        if Nlist[i] == "l": # lj
            result += 1
            newList[i+1] = 0
        if Nlist[i] == "n": # nj
            result += 1
            newList[i+1] = 0
        if Nlist[i] == "s": # s=
            result += 1
            newList[i+1] = 0
        if Nlist[i] == "z": # z=
            result += 1
            newList[i+1] = 0
    print(newList)
print(result)

아무 내용도 안 넣고 싶을 때

pass

아나 나는 입력값이 크로아티아 문자밖에 없는 줄 알았지!

으악 다시해야하잖아

그래도 1만 있는 리스트 0으로 바꿔서 제어하는 건 괜찮은 생각이지 않남?

 

백준 2941번 [파이썬] 크로아티아 알파벳 : replace 함수

[Python] 백준 알고리즘 온라인 저지 2941번 : 크로아티아 알파벳 크로아티아 알파벳 č c= ć c- dž dz= đ d- lj lj nj nj š s= ž z= Python3 코드 croatia = ['c=', 'c-', 'dz=', 'd-', 'lj', 'nj', 's=..

ooyoung.tistory.com

와 여기 엄청난 코드가 있따

 

변수. replace(old, new, [count])

문자열을 변경하는 함수

문자열 안에서 특정 문자를 새로운 문자로 변경하는 기능.

 

- a: 현재 문자열에서 변경하고 싶은 문자

- b: 새로 바꿀 문자

- c: 변경할 횟수. 횟수는 입력하지 않으면 old의 문자열 전체를 변경!!

기본값은 전체를 의미하는 count=-1로 지정

 

 오 -1 이 전체인가?


음 일단

모든 알파벳 리스트,

알파벳 리스트에 수가 있으면 통과

다음 수가 같은 수일 때까지 계속 

수가 없으면 전체 케이스에서 빼자

 

3) 리스트 슬라이싱

파이썬 리스트에 있는 데이터에 하나씩 접근할 때는 인덱싱을 사용하면 됩니다. 그런데 리스트에 있는 여러 개의 데이터에 동시에 접근하려면 어떻게 해야 할까요? 이럴 때 사용하 ...

wikidocs.net

앞으로 stdin.readline() 이용해서 리스트에 넣을 때는 끝에 [0:-1] 를 넣어서 \n 을 없애자!!!

 

range(a, b)    =>   a,a+1,a+2,.....b-1

from sys import stdin
N = int(stdin.readline())
result = 0
for i in range(N):
    Nlist = list(stdin.readline())[0:-1] # 문자 하나씩, 슬라이싱 이용\n 제거
    reList = [1 for _ in range(len(Nlist))]
    alList = ['a','b','c','d','e','f','g','h','i','j','k','l', 'm','n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z']

    for i in range(len(Nlist)):
        if reList[i] == 1:
            if Nlist[i] in alList:
                alList.remove(Nlist[i])
                for k in range(i+1, len(Nlist)): # 계속 같은 문자인가?
                    if Nlist[i] == Nlist[k]:
                        reList[k] = 0
                    else:
                        break
            else:
                result += 1
                break
        

print(N - result)

맞았습니다~

 

단계별로 풀어보기  - 문자열 까지 끝! 

언제 이거 다 풀려나..?

 

백준게시판질문

'짜잘IT' 카테고리의 다른 글

22.09.08 - C언어  (0) 2022.09.08
22.09.08 백준풀이  (0) 2022.09.08
C 언어 입문!  (0) 2022.09.06
22.09.05 백준풀이  (0) 2022.09.05
22.09.04 백준풀이  (0) 2022.09.05