ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 2023.7.29.토요일
    TIL( Today I Learned) 2023. 7. 30. 00:31

     

    • 163//59 한 번만 등장한 문자 59
      문제 설명

    문자열 s가 매개변수로 주어집니다. s에서 한 번만 등장하는 문자를 사전 순으로 정렬한 문자열을 return 하도록 solution 함수를 완성해보세요. 한 번만 등장하는 문자가 없을 경우 빈 문자열을 return 합니다.

     

    제한사항

    • 0 < s의 길이 < 1,000
    • s는 소문자로만 이루어져 있습니다.

     

    입출력 예

    s result
    "abcabcadc" "d"
    "abdc" "abcd"
    "hello" "eho"

    입출력 예 설명

    입출력 예 #1

    • "abcabcadc"에서 하나만 등장하는 문자는 "d"입니다.

    입출력 예 #2

    • "abdc"에서 모든 문자가 한 번씩 등장하므로 사전 순으로 정렬한 "abcd"를 return 합니다.

    입출력 예 #3

    • "hello"에서 한 번씩 등장한 문자는 "heo"이고 이를 사전 순으로 정렬한 "eho"를 return 합니다.

     

     

    내답. # 공부햇다

     

    def solution(s):

        answer = ''

        uks = unique_chars=[]

        

        for char in s:

            if s.count(char)==1:

                uks.append(char)

            else:

                pass

        

        uks.sort() # uks = 사전 배열 리스트 그러나 중간에 마치 ['a','b']이런 형태일 것이다

        answer= uks_st = ''.join(uks)

        

        return answer

     

    def find_unique_characters(a):

        unique_chars = []

        for char in a:

            if a.count(char) == 1:

                unique_chars.append(char)

        return unique_chars

     

     

    남의 풀이

    def solution(s):

        answer = "".join(sorted([ ch for ch in s if s.count(ch) == 1]))

        return answer

     

     

    • 163/58 문자열이 몇 번 등장하는지 세기. 58

    • 문제 설명

    문자열 myString과 pat이 주어집니다. myString에서 pat이 등장하는 횟수를 return 하는 solution 함수를 완성해 주세요.

     

    제한사항

    • 1 ≤ myString ≤ 1000
    • 1 ≤ pat ≤ 10

     

    입출력 예

    myString pat result
    "banana" "ana" 2
    "aaaa" "aa" 3

    입출력 예 설명

    입출력 예 #1

    • "banana"에서 1 ~ 3번 인덱스에서 한 번, 3 ~ 5번 인덱스에서 또 한 번 "ana"가 등장해서 총 두 번 등장합니다. 따라서 2를 return 합니다.

     

    연습예

    als ="banananajjana"

    pat ="ana"

    #n1 =len(pat)

    #print(n1)

    count = 0

    for i in range(len(als)) :       

        if als[i:i+len(pat)] == pat:

            count +=1

     

    print(count)     

     

    나의 답

    def solution(myString, pat):

        

        num = len(pat)

        count = 0

        for i in range(len(myString)):

            if myString[i:i+num] == pat:

                count +=1

        return count

     

    def solution(myString, pat):

        return sum(myString[i:i + len(pat)] == pat for i in range(len(myString)))

     

    def solution(myString, pat):

        answer = 0

        for i, x in enumerate(myString) :

            if myString[i:].startswith(pat) :

                answer += 1

        return answer

     

    물론 myString[i:].startswith(pat) 표현식 분석

    1. myString: pat 패턴을 찾기 위해 분석 중인 입력 문자열
    2. myString[i:]: 슬라이싱이라고 함 . 인덱스 i에서 시작하여 문자열 끝까지 myString의 새 하위 문자열을 생성. 
    3. Python에서 문자열 인덱싱은 0부터 시작. 즉, 첫 번째 문자는 인덱스 0, 두 번째 문자는 인덱스 1 등을 의미.
    4. 따라서 myString[i:]는 색인 i의 문자에서 시작하여 원래 문자열의 끝까지 모든 문자를 포함하는 새 문자열을 제공.
    5. startswith(pat): 파이썬 문자열의 방법. 주어진 문자열이 지정된 pat(패턴) 문자열로 시작하는지 확인. 
    6. 원래 문자열이 패턴으로 시작하면 'True'를 반환하고 그렇지 않으면 'False'를 반환합니다.

    전체적 분석:

    myString[i:].startswith(pat) 표현식은 색인 i에서 시작하여 문자열 끝까지 계속되는 myString의 하위 문자열(즉, myString[i:])이 다음. 패턴 팻.으로 시작하는지 확인.

    .

    따라서 solution 함수의 컨텍스트에서 이 표현식은 myString의 다른 하위 문자열에서 패턴 pat 발생을 찾기 위해 루프 내에서 사용됩니다. 루프는 myString의 각 문자를 반복하고 각 단계에서 나머지 하위 문자열(현재 문자에서 시작)이 pat 패턴으로 시작하는지 확인합니다. 그렇다면 패턴 pat가 해당 위치에 있고 answer 변수가 증가하여 발생 횟수를 세는 것을 의미합니다.

     

    • 164//57세 개의 구분자

    •  

    문제 설명

    임의의 문자열이 주어졌을 때 문자 "a", "b", "c"를 구분자로 사용해 문자열을 나누고자 합니다.

    예를 들어 주어진 문자열이 "baconlettucetomato"라면 나눠진 문자열 목록은 ["onlettu", "etom", "to"] 가 됩니다.

    문자열 myStr이 주어졌을 때 위 예시와 같이 "a", "b", "c"를 사용해 나눠진 문자열을 순서대로 저장한 배열을 return 하는 solution 함수를 완성해 주세요.

    단, 두 구분자 사이에 다른 문자가 없을 경우에는 아무것도 저장하지 않으며, return할 배열이 빈 배열이라면 ["EMPTY"]를 return 합니다.

     

    제한사항

    • 1 ≤ myStr의 길이 ≤ 1,000,000

    입출력 예

    myStr result
    "baconlettucetomato" ["onlettu", "etom", "to"]
    "abcd" ["d"]
    "cabab" ["EMPTY"]

    입출력 예 설명

    입출력 예 #1

    • 문제 설명의 예시와 같습니다.

    입출력 예 #2

    • "c" 이전에는 "a", "b", "c" 이외의 문자가 없습니다.
    • "c" 이후에 문자열 "d"가 있으므로 "d"를 저장합니다.
    • 따라서 ["d"]를 return 합니다.

    입출력 예 #3

    • "a", "b", "c" 이외의 문자가 존재하지 않습니다. 따라서 저장할 문자열이 없습니다.
    • 따라서 ["EMPTY"]를 return 합니다.

     

    쳇것

    def solution(myStr):

        # Initialize variables

        result = []

        current_str = ""

        delimiters = {"a", "b", "c"}

     

        # Loop through each character in the input string

        for char in myStr:

            if char in delimiters:

                if current_str:

                    result.append(current_str)

                current_str = ""

            else:

                current_str += char

     

        # Append the last substring (if any)

        if current_str:

            result.append(current_str)

     

        # Check if the result list is empty and return ["EMPTY"] in that case

        if not result:

            result = ["EMPTY"]

     

        return result

     

     

     

     

Designed by Tistory.