상세 컨텐츠

본문 제목

백준 2941번 파이썬

알고리즘 공부

by 독서와 여행 2020. 7. 16. 13:59

본문

 

cro = ['c=', 'c-', 'd-', 's=', 'z=', 'lj', 'nj', 'dz=']

one = input()
a = list(one)

b = []
num = 0
i = 0
minus = 0
while i < (len(one)):
    if ("".join(a[i: i + 3]) in cro[7:] and a[i] != '=' and a[i] != '-'):
        #print('{}'.format("".join(a[i: i + 3])))
        num += 1
        b.append("".join(a[i: i + 3]))
        i += 3


    elif("".join(a[i: i +2]) in cro[0:7] and a[i] != '=' and a[i] != '-'):
        num +=1
        b.append("".join(a[i: i +2]))
        #print('{}'.format("".join(a[i: i + 2])))
        i += 2


    elif(a[i] == '-' or a[i] == '='):
        minus -= 1
        i += 1

    else:
        i += 1


b = ("".join(b))
c = len(one) - len(b) + num + minus
print("{}".format(c))

 

 

 

와 진짜 푸는데 오래 걸렸다. if 첫번째에서 그냥 

cro[7] 이라 해서 문자열이 나와 dz가 반례가 되는 것을 생각하지 못 했다.

마치 'abc' in 'abcd' 하면 true인 것 처럼

다른 사람이 푼 코드 찾아보니까 그냥 3줄이면 풀던데

이 코드는 너무 파이썬이 아니라 c스타일 같아서 별로다 다른 사람이 어떻게 풀었는지 보고와야지.

그래도 풀어서 기분이 좋다.

'알고리즘 공부' 카테고리의 다른 글

백준 파이썬 1003번  (0) 2020.09.10
백준 파이썬 2748번  (0) 2020.07.24
백준 10814번 파이썬  (0) 2020.07.18
백준 1436번 파이썬  (0) 2020.07.17
백준 2798번 파이썬  (0) 2020.07.16

관련글 더보기

댓글 영역