안녕하세요. 이번 포스팅에서는 Py.CheckiO 의 Scientific Expedition 레벨에 있는 Caps Lock 문제풀이를 해보겠습니다.
주의:
제 답이 최고/최적화된 답이 아닐 수 있으며, 해결하는 것에만 집중한 답이기 때문에 좀 더 나은 방법이나 해석이 있으시다면 댓글 부탁드립니다.
0. Caps Lock 문제 내용
Scientific Expedition 레벨의 Caps Lock 문제 내용입니다.
주어진 문자열(list)에서 'a' 가 나타날 때, 'Caps Lock' 키를 누룬 것처럼 인식이 되어
'a' 뒤에 나오는 단어들이 대문자가 됬다가 또 다른 'a' 가 나오면 다시 원래대로인 소문자로 돌아가는 문제입니다.
제약조건은 원래의 주어진 문자열에서 'a' 들이 삭제가 되야 한다는 점입니다.
1. Caps Lock 문제 풀이
'a' 가 한번만 나온다면 'a' 가 위치한 index 값을 얻어서 그 뒤의 문자열들을 대문자로 변환하면 쉽게 끝나겠지만
문자열에 'a' 가 여러번 나올 때를 생각해야 합니다.
'a' 가 나타날 때, Caps Lock 이 눌린다고 생각한다면 Caps Lock 이 활성화 된 상태와 활성화되지 않은 상태가 있을 것입니다.
이 두가지 상태를 나타내기 위한 변수 flag를 하나 만듭니다.
이 flag는
flag=1(기본값) ---> Caps Lock이 비활성화 된 상태
flag=-1 ---> Caps Lock이 활성화 된 상태
를 뜻하며 'a' 가 나타날 때 마다 flag의 값에 (-1)을 곱하면서 상태가 바뀝니다.
for 반복문을 통해서 주어진 문자열 text를 돌면서 단어들을 새 문자열 tmp_text에 붙입니다.
만약 'a' 가 나타나면 flag에 (-1)을 곱하고 Caps Lock 상태를 바꾸면서 다음 문자로 넘어갑니다.
flag의 상태에 따라서 flag가 1인경우엔 Caps Lock이 비활성화된 상태이므로 새로운 문자열(tmp_text)에 원래의 문자 그대로 붙입니다.
flag가 -1인 경우엔 Caps Lock이 활성화된 상태이므로 새로운 문자열에 대문자로 변환한 문자를 더해서 문자열을 만듭니다.
본 포스팅의 내용 및 이미지를 무단 전재, 재배포 또는 복사를 금지합니다.
인용 시 출처와 같이 공개해주세요!
도움이 되셨다면 댓글 또는 공감 부탁드립니다!
댓글