ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 8.11.금요일
    TIL( Today I Learned) 2023. 8. 11. 21:53

    오늘 일도 많고, 덩달아 머리도 아파서, 얼마 못했다. 심한 반성. 

     

     

     

    어제 것 다시 확실히, 다른 답도 조사

    1.세 개의 구분자

     

    문제 설명

    임의의 문자열이 주어졌을 때 문자 "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 합니다.

     

    연습

    ls =[]

    ms =''

    for i in "kbeauti": 

        if i  not in ["a", "b", "c"]:

            ms += i

             

        else:

            if ms:

              ls.append(ms)

              ms =''

    if ms:

        ls.append(ms)

    print(ls)

     

    이전거 

    내가 아마 쳇것을 거의 배꼇나보다 

    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

     

    새로 한거

    def solution(myStr): 

        ls =[]

        ms =''

        for i in myStr:

            if i not in ['a','b','c']:

                ms += i

            else:

                if ms:

                    ls.append(ms)

                    ms = ''

        if ms:

            ls.append(ms)

        

        else: —> if not ls:

            if ms=="" and ls==[]:  —> 이것 하나로 된다

                ls = ["EMPTY"] ls = ["EMPTY"]

        return ls return ls

     

    ###### 깔끔한답

     

    def solution(myStr):

        answer = [x for x in myStr.replace('a', ' ').replace('b', ' ').replace('c', ' ').split() if x]

        return answer if answer else ['EMPTY']

    와우 — 깔끔하고 아름답다

     

    주어진 문자열 myStr에서 문자 'a', 'b', 'c'를 빈 칸으로 대체하고 나서 빈 칸을 기준으로 문자열을 분할한 후, 비어있지 않은 문자열들을 추출하여 반환하는 함수입니다.

    • myStr.replace('a', ' ').replace('b', ' ').replace('c', ' '): 문자열 myStr에서 'a', 'b', 'c'를 빈 칸으로 대체합니다.
    • .split(): 빈 칸을 기준으로 문자열을 분할하여 리스트로 만듭니다.
    • [x for x in ... if x]: 리스트 컴프리헨션을 사용하여 리스트에서 항목을 순회하면서 문자열이 아닌 항목들만 추출합니다.
    • return answer if answer else ['EMPTY']: 추출한 항목들을 반환하는데, 만약 추출한 항목이 비어있으면 ['EMPTY']를 반환합니다.

    즉, 주어진 문자열에서 'a', 'b', 'c'를 빈 칸으로 대체하고 나서 빈 칸을 기준으로 문자열을 분할하고, 그 중에서 비어있지 않은 문자열들만 추출하여 반환하는 함수입니다.

     

                    

    • 2. 이진수 더하기
    •  

    문제 설명

    이진수를 의미하는 두 개의 문자열 bin1과 bin2가 매개변수로 주어질 때, 두 이진수의 합을 return하도록 solution 함수를 완성해주세요.

     

    제한사항

    • return 값은 이진수를 의미하는 문자열입니다.
    • 1 ≤ bin1, bin2의 길이 ≤ 10
    • bin1과 bin2는 0과 1로만 이루어져 있습니다.
    • bin1과 bin2는 "0"을 제외하고 0으로 시작하지 않습니다.

     

    입출력 예

    bin1 bin2 result
    "10" "11" "101"
    "1001" "1111" "11000"

    입출력 예 설명

    입출력 예 #1

    •10 + 11 = 101 이므로 "101" 을 return합니다.

    입출력 예 #2

    .1001 + 1111 = 11000 이므로 "11000"을 return합니다.

     

    이전 답 ;; 몰라서 그냥 카피하고 이해만 했나보다. 도통 ???

    def solution(bin1, bin2):
        result = ""
        i, j = len(bin1) - 1, len(bin2) - 1
        carry = 0

        while i >= 0 or j >= 0:
            digit1 = int(bin1[i]) if i >= 0 else 0
            digit2 = int(bin2[j]) if j >= 0 else 0

            # Add the digits along with the carry
            total_sum = digit1 + digit2 + carry

            # Append the sum modulo 2 to the result
            result += str(total_sum % 2)

            # Update the carry for the next iteration
            carry = total_sum // 2

            i -= 1
            j -= 1

        # If there is any remaining carry, append it to the result
        if carry:
            result += str(carry)

        # Reverse the result and return it
        return result[::-1]

    쳇 거

    def add_binary(bin1, bin2):

        # 자리수를 맞추기 위해 0을 채워넣습니다.

        bin1 = bin1.zfill(len(bin2))

        bin2 = bin2.zfill(len(bin1))

     

        # 더한 결과를 저장할 리스트를 생성합니다.

        result = []

     

        # 이진수를 더합니다.

        carry = 0

        for i in range(len(bin1)-1, -1, -1):

            bit_sum = int(bin1[i]) + int(bin2[i]) + carry

            if bit_sum >= 2:

                carry = 1

                bit_sum -= 2

            else:

                carry = 0

            result.append(str(bit_sum))

     

        # 마지막 자리수에서 올림이 발생한 경우 처리합니다.

        if carry == 1:

            result.append('1')

     

        # 결과를 뒤집어서 반환합니다.

        return ''.join(result[::-1])

     

    내가 공부한 내용과 내가 만든거 

     

    십진수를 2진수로 만드는 함수

    def decimal_to_binary(decimal_num):

        binary_num = ""  

        while decimal_num > 0:

            remainder = decimal_num % 2 

            binary_num = str(remainder) + binary_num  

            decimal_num //= 2  # 10진수를 2로 나눈 몫을 구합니다.

        return binary_num if binary_num else "0"  

     

     

    ####이진수를 10진수로 바꾸는 법

    def solution_b2t(bin_number):

        

        tin_st =[]

        for i,v in enumerate(bin_number):

            print(i,v)

            tin_st +=[int( v)*(2**(len(bin_number)-(1+i)))]

        return (sum(tin_st))

     

     

    #### 두 수를 계산하는 법

    def solution(bin1,bin2):

        an1=[]

        for i in (bin1,bin2):

            an1 += solution_b2t(i)

        result = sum(an1)

     

        

    print(solution_b2t(n))

     

    가장 간단한 방법

    def solution(bin1, bin2):

        answer = bin(int(bin1,2) + int(bin2,2))[2:]

        return answer

     

     

Designed by Tistory.