20210730 TIL
업데이트:
GDSC Yonsei 구글 사이트 수정하기
DSC에서 GDSC로 정식 명칭이 바뀌어서, 로고 수정 작업을 진행하고
구글 사이트에 적용하는 과정을 거쳤다.
백준 단계별로 풀어보기 7단계 중 예제 9~10단계 작성하기
2941번, 1316번 문제를 풀고 다음 글에 해당 내용을 업데이트했다.
[7단계] 파이썬3으로 백준 단계별로 풀어보기- 문자열
예제 9단계에서는 2~3개의 알파벳 또는 기호 조합으로 이루어진 특정 문자열을 크로아티아 알파벳 한 글자로 인식해야 하고, 그러한 특수한 조합이 6개 있었다.
특수한 조합에 해당하지 않는 알파벳은 한 글자로 인식해야 한다.
입력된 문자열에서 알파벳이 몇 글자 있는지 출력하는 문제였다.
2~3개의 알파벳 또는 기호 조합을 한 글자로 인식하는 과정에서 시행착오가 있었다.
처음 작성한 코드는 특정 문자열 조합을 인식하면 문자열에서 삭제하는 방법이었다.
‘dz=’도 크로아티아 알파벳이고, ‘z=’도 크로아티아 알파벳이어서 모든 ‘dz=’의 개수를 계산하고 삭제하면 ‘z=’의 개수를 측정할 때 문제가 생기지 않을 것이라 생각했다.
그리고 모든 특수 조합을 삭제하고 남은 문자열의 길이를 측정하여 문자 1개를 글자 1개로 계산하려고 했었다.
다수의 문자열에서는 문제가 없었으나 특정 문자 조합을 삭제한 이후, 삭제된 문자열 앞뒤 문자가 붙여졌을 때 새로운 크로아티아 알파벳이 되는 경우가 있어서 문제가 생겼다.
예시로, 예제 입력3 nljj가 있다.
nljj에서 lj은 특수 조합에 해당하여 크로아티아 알파벳 한 글자이므로, 총 알파벳 개수는 3개이다.
위의 방법처럼 인식된 특수 조합을 삭제한다면
nj가 되는데, nj도 특수 조합에 해당하여 크로아티아 알파벳 한 글자로 인식된다.
즉, 문자 2개로 인식된다.
그래서 특수 조합을 인식하고 삭제하는 것이 아니라, 아예 새로운 기호 ‘*‘로 대체하는 방법으로 바꿨다.
이렇게 하면
‘dz=’와 ‘z=’의 개수를 계산할 때도 계산 순서만 지킨다면 문제가 생기지 않고,
위의 예제 입력3의 경우에도
nljj가
n*j로 바뀌며, 새로운 조합이 생기는 일이 없어진다.
특정 자료를 삭제하는 일은, 삭제한 이후 새로운 조합이 생기는지, 다른 문제가 생기지는 않는지 점검하고 진행해야겠다.
GitHub에 올린 소스 코드 위치는 아래에 있다.
level9-2941-크로아티아알파벳.py
level10-1316-그룹단어체커.py