99클럽 코테 스터디 3일차 TIL : 문자열

마늘맨·2024년 7월 24일
0

99클럽 3기

목록 보기
3/42

99클럽 3기 3일차

오늘도 쉬어가는 날인가 보다,,,

Notion에서 작성한 글이라, 여기에서 더 깔끔하게 보실 수 있습니다 😮😊


[Beginner] 문자열 내 p와 y의 개수

[문자열 내 p와 y의 개수]

대문자와 소문자는 구별하지 않고 개수를 비교하므로, lower() 또는 upper()로 바꿔서 개수를 세면 된다.

Solution) O(n)O(n)

s = s.lower()
return s.count('p') == s.count('y')

[Middler] 문자열 내 마음대로 정렬하기

[문자열 내 마음대로 정렬하기]

  • python의 경우 sort()key에 정렬 기준을 지정해주는 방법으로 아주 쉽게 풀 수 있다.
  • 이 때, nn번째 인덱스의 문자가 같은 문자열이 여럿일 경우, 사전순으로 앞선 문자열이 앞쪽에 위치하도록 하는 것은 lambda에 두 개의 인자를 넣어주면 쉽게 해결 가능하다.

Solution) O(nlgn)O(n \lg n)

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)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)

profile
안녕! 😊

0개의 댓글