Breaking

2019년 1월 13일 일요일

Baekjoon 2941번 크로아티아 알파벳

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