Baekjoon 2941번 크로아티아 알파벳
https://www.acmicpc.net/problem/2941
처음에 어떻게 할까 생각하다 첫 알파벳이 같을 때 꺼내와서 조건문에 넣고 돌려야겠다는 생각으로 다음과 같이 코딩을 짜보았다.
그러나 frontalp가 딱히 필요할 것 같다는 생각이 들었고 삭제해도 무난히 작동됨을 알 수 있었다.
cf)
코딩을 짜는데 제일 짜증났던 부분은 'dz='라는 알파벳인데 이 알파벳만 유일하게 3자리이다.
이것 때문에 슬라이싱하는데 까다롭다는 생각을 하게되었고 for문에서 바로 jump하는 법이 없기때문에 따로 조건문을 또 써줘야하는 에러점이 생겼다.
getStr=input() chalp=['c=','c-','dz=','d-','lj','nj','s=','z='] #앞자리 c,d,l,n,s,z frontalp=['c','d','l','n','s','z'] boolJump=False sumalp=0 for i in range(len(getStr)): if boolJump== True: boolJump=False if getStr[i-1:i+2] == 'dz=': boolJump=True continue else: if getStr[i] in frontalp: if getStr[i:i+2] in chalp or getStr[i:i+3]=='dz=': sumalp +=1 boolJump=True else: sumalp+=1 else: sumalp +=1 print(sumalp)
frontalp 삭제 후의 코딩
getStr=input() chalp=['c=','c-','dz=','d-','lj','nj','s=','z='] boolJump=False sumalp=0 for i in range(len(getStr)): if boolJump== True: boolJump=False if getStr[i-1:i+2] == 'dz=': boolJump=True continue else: if getStr[i:i+2] in chalp or getStr[i:i+3]=='dz=': sumalp +=1 boolJump=True else: sumalp+=1 print(sumalp)
다만 이렇게 사용하면 boolJump의 리소스나 for문으로 돌리는 소모 값이 크기 때문에
while문을 사용하는 방법 혹은 다른 언어라면 do while문을 사용하는 방법이 의미있을 수 있다는 생각을 하게되었으나 귀차니즘으로 패스
ALL RIGHT RESERVED TWINSTARINFO