일을 하다보면, 개발자적 사고가 필요할 때가 있다.
가령 어떤 작업을 반복적으로 해야할 때가 있는데, 함수를 썼으면 편했겠다 싶으면서도 방법을 떠올리지 못해 멍청하게 일을 할 때가 많다. 😢
틈틈이 파이썬도 써볼겸, 프로그래밍 사고도 함양할 겸 기초적인 코딩 문제를 풀었던 내용을 정리하려고 한다.
문제
- 문제 링크 :
py.checkio.org/en/mission/caps-lock/
Caps Lock mission. python coding challenges - Py.CheckiO
Add short description
py.checkio.org
문제를 간단히 설명하자면, 손가락이 뚱뚱한 Joe는 'a'키를 누르려고 할 때 'a'키 대신 caps lock키를 누르게 된다.
단, 대문자를 입력할 때는 올바르게 'A'키를 누른다.
이러한 Joe의 입력체계를 구현하라는 것이 문제이다.
내가 작성한 답안
def caps_lock(text: str) -> str:
text_word = text.split("a")
temp = [ ]
for i in text_word :
if text_word.index(i) % 2 == 1 :
i = i.upper()
temp.append(i)
else :
temp.append(i)
return ''.join(temp)
예시로 나온 한 문장인
"Why are you asking me that?"을 예시로 놓고 보면,
1. 소문자 a를 기준으로 문자열을 split 해서 list 형태로 만든다.
2. 리스트의 0번째 인덱스, 즉 첫번째는 a가 나오기 전의 상태일 것이므로 이건 그대로 두고,
1번째 인덱스는 대문자로 변환된 상태, 2번째 인덱스는 다시 caps lock을 눌러 소문자가 된 상태...
즉, 홀수번째 인덱스만 대문자로 변환하면 된다고 생각했다.
3. 홀수번째 인덱스 -> 대문자 변환, 짝수번째 인덱스 -> 문장 유지한 상태로 리스트를 만들고
4. 그걸 다시 문자열로 변환하면 완성된다고 생각했다.
저 문제는 내가 작성한 코드로 돌아가기는 한다.
다만, 문장 중간에 'a'가 아닌 다른 대문자가 들어갔을 때,
caps lock키가 켜져있다고 인식하지 못하고 수동으로 대문자로 변환하는 처리를 하게 된다면
결과적으로 그 문자는 소문자로 입력될텐데 그 부분에 대한 처리는 어떻게 해야하는지 모르겠다는게 함정이다..😥
다른 답안
- 링크 : py.checkio.org/mission/caps-lock/publications/review/clear/
import re
def caps_lock(text: str) -> str:
# your code here
return re.sub(r'a(.*?)(?:a|\Z)', lambda m: m.group(1).upper(), text)
- 놓쳤던 부분들
a ~ a 사이에, 혹은 a부터 문장이 마지막으로 끝나는 부분을 다 대문자로 치환해버린다.
a가 짝수번 등장하든, 홀수번 등장하든 저 로직이면 다 처리되는 것 같다.
- re 라는 정규표현식을 처리할 수 있다는 패키지가 있다.
- re.sub - 문자를 치환하는 함수.
- ' ' 앞에 r이 붙여서, \(역슬래시)를 문자 그대로 보겠다고 처리해버린다.
- a로 시작하고 그 중간에 뭐가 오건 말건 상관없고, a로 끝나거나 아니면 아예 문장끝인 경우에 속하는 부분을 group으로 처리해서 대문자로 바꿔버린다.
참고 사이트
파이썬 구현 동작 확인 : pythontutor.com/
Python Tutor - Visualize Python, Java, C, C++, JavaScript, TypeScript, and Ruby code execution
VISUALIZE CODE EXECUTION Learn Python, Java, C, C++, JavaScript, and Ruby Python Tutor helps people overcome a fundamental barrier to learning programming: understanding what happens as the computer runs each line of code. You can use it to write Python, J
pythontutor.com
코딩문제 출처 : https://py.checkio.org/
CheckiO - coding games and programming challenges for beginner and advanced
CheckiO - coding websites and programming games. Improve your coding skills by solving coding challenges and exercises online with your friends in a fun way. Exchanges experience with other users online through fun coding activities
checkio.org
오늘의 코딩 문제! 끝
일을 하다보면, 개발자적 사고가 필요할 때가 있다.
가령 어떤 작업을 반복적으로 해야할 때가 있는데, 함수를 썼으면 편했겠다 싶으면서도 방법을 떠올리지 못해 멍청하게 일을 할 때가 많다. 😢
틈틈이 파이썬도 써볼겸, 프로그래밍 사고도 함양할 겸 기초적인 코딩 문제를 풀었던 내용을 정리하려고 한다.
문제
- 문제 링크 :
py.checkio.org/en/mission/caps-lock/
Caps Lock mission. python coding challenges - Py.CheckiO
Add short description
py.checkio.org
문제를 간단히 설명하자면, 손가락이 뚱뚱한 Joe는 'a'키를 누르려고 할 때 'a'키 대신 caps lock키를 누르게 된다.
단, 대문자를 입력할 때는 올바르게 'A'키를 누른다.
이러한 Joe의 입력체계를 구현하라는 것이 문제이다.
내가 작성한 답안
def caps_lock(text: str) -> str:
text_word = text.split("a")
temp = [ ]
for i in text_word :
if text_word.index(i) % 2 == 1 :
i = i.upper()
temp.append(i)
else :
temp.append(i)
return ''.join(temp)
예시로 나온 한 문장인
"Why are you asking me that?"을 예시로 놓고 보면,
1. 소문자 a를 기준으로 문자열을 split 해서 list 형태로 만든다.
2. 리스트의 0번째 인덱스, 즉 첫번째는 a가 나오기 전의 상태일 것이므로 이건 그대로 두고,
1번째 인덱스는 대문자로 변환된 상태, 2번째 인덱스는 다시 caps lock을 눌러 소문자가 된 상태...
즉, 홀수번째 인덱스만 대문자로 변환하면 된다고 생각했다.
3. 홀수번째 인덱스 -> 대문자 변환, 짝수번째 인덱스 -> 문장 유지한 상태로 리스트를 만들고
4. 그걸 다시 문자열로 변환하면 완성된다고 생각했다.
저 문제는 내가 작성한 코드로 돌아가기는 한다.
다만, 문장 중간에 'a'가 아닌 다른 대문자가 들어갔을 때,
caps lock키가 켜져있다고 인식하지 못하고 수동으로 대문자로 변환하는 처리를 하게 된다면
결과적으로 그 문자는 소문자로 입력될텐데 그 부분에 대한 처리는 어떻게 해야하는지 모르겠다는게 함정이다..😥
다른 답안
- 링크 : py.checkio.org/mission/caps-lock/publications/review/clear/
import re
def caps_lock(text: str) -> str:
# your code here
return re.sub(r'a(.*?)(?:a|\Z)', lambda m: m.group(1).upper(), text)
- 놓쳤던 부분들
a ~ a 사이에, 혹은 a부터 문장이 마지막으로 끝나는 부분을 다 대문자로 치환해버린다.
a가 짝수번 등장하든, 홀수번 등장하든 저 로직이면 다 처리되는 것 같다.
- re 라는 정규표현식을 처리할 수 있다는 패키지가 있다.
- re.sub - 문자를 치환하는 함수.
- ' ' 앞에 r이 붙여서, \(역슬래시)를 문자 그대로 보겠다고 처리해버린다.
- a로 시작하고 그 중간에 뭐가 오건 말건 상관없고, a로 끝나거나 아니면 아예 문장끝인 경우에 속하는 부분을 group으로 처리해서 대문자로 바꿔버린다.
참고 사이트
파이썬 구현 동작 확인 : pythontutor.com/
Python Tutor - Visualize Python, Java, C, C++, JavaScript, TypeScript, and Ruby code execution
VISUALIZE CODE EXECUTION Learn Python, Java, C, C++, JavaScript, and Ruby Python Tutor helps people overcome a fundamental barrier to learning programming: understanding what happens as the computer runs each line of code. You can use it to write Python, J
pythontutor.com
코딩문제 출처 : https://py.checkio.org/
CheckiO - coding games and programming challenges for beginner and advanced
CheckiO - coding websites and programming games. Improve your coding skills by solving coding challenges and exercises online with your friends in a fun way. Exchanges experience with other users online through fun coding activities
checkio.org
오늘의 코딩 문제! 끝