99클럽 3기 3일차
오늘도 쉬어가는 날인가 보다,,,
Notion에서 작성한 글이라, 여기에서 더 깔끔하게 보실 수 있습니다 😮😊
[Beginner] 문자열 내 p와 y의 개수
[문자열 내 p와 y의 개수]
대문자와 소문자는 구별하지 않고 개수를 비교하므로, lower()
또는 upper()
로 바꿔서 개수를 세면 된다.
Solution) O(n)
s = s.lower()
return s.count('p') == s.count('y')
[Middler] 문자열 내 마음대로 정렬하기
[문자열 내 마음대로 정렬하기]
- python의 경우
sort()
의 key
에 정렬 기준을 지정해주는 방법으로 아주 쉽게 풀 수 있다.
- 이 때, n번째 인덱스의 문자가 같은 문자열이 여럿일 경우, 사전순으로 앞선 문자열이 앞쪽에 위치하도록 하는 것은 lambda에 두 개의 인자를 넣어주면 쉽게 해결 가능하다.
Solution) O(nlgn)
return sorted(strings, key=lambda x: (x[n], x))
[Challenger] 숫자 문자열과 영단어
[숫자 문자열과 영단어]
- 각 영단어가 숫자와 1:1로 mapping되어있다(당연한 말이긴 한데, 이 점에 주목하면 된다). dictionary를 이용하여 치환해주면 된다.
- 문자열에서 영단어를 어떻게 인식할 것인가? → python의 경우
in
연산자를 이용하면 아주 쉽게 문제가 풀린다.
- ‘oneight’ 처럼, ‘one’을 먼저 replace하면 ‘1ight’가 되어 ‘eight’의 정보를 잃어버려 숫자로 모두 바꿀 수 없다거나 하는 등의 엣지케이스가 있을까 싶었는데, 여러 가지가 가능하면 다 출력한달지, 또는 impossible을 출력하라는 것과 같은 내용이 없는 걸로 보아 주어지는 문자열이 항상 모두 숫자로 바뀔 수 있다는 것이 보장되는 것으로 보여
네오를 믿고 제출했다.
Solution) O(n)
def solution(s):
eng = {'zero':'0', 'one':'1', 'two':'2', 'three':'3', 'four':'4', 'five':'5', 'six':'6', 'seven':'7', 'eight':'8', 'nine':'9'}
for e in eng.keys():
if e in s:
s = s.replace(e, eng[e])
return int(s)