ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 2023.7.25.화요일
    TIL( Today I Learned) 2023. 7. 25. 22:52

    7.25

     

     

     

    • 문자 반복 출력하기
    •  

    문제 설명

    문자열 my_string과 정수 n이 매개변수로 주어질 때, my_string에 들어있는 각 문자를 n만큼 반복한 문자열을 return 하도록 solution 함수를 완성해보세요.

     

    제한사항

    • 2 ≤ my_string 길이 ≤ 5
    • 2 ≤ n ≤ 10
    • "my_string"은 영어 대소문자로 이루어져 있습니다.

     

    def solution(my_string, n):

        answer = ''

        for i in my_string:

            answer +=i*n

        return answer

     

     

    def solution(my_string, n):

        return ''.join(i*n for i in my_string)

     

    • 배열 원소의 길이
    •  

    문제 설명

    문자열 배열 strlist가 매개변수로 주어집니다. strlist 각 원소의 길이를 담은 배열을 retrun하도록 solution 함수를 완성해주세요.

     

    제한사항

    • 1 ≤ strlist 원소의 길이 ≤ 100
    • strlist는 알파벳 소문자, 대문자, 특수문자로 구성되어 있습니다.

     

    입출력 예

    strlist result
    ["We", "are", "the", "world!"] [2, 3, 3, 6]
    ["I", "Love", "Programmers."] [1, 4, 12]

     

    def solution(strlist):

        answer = []

        for i in strlist:

            a = len(i)

            answer.append(a)

        return answer

     

    def solution(strlist):

        answer = list(map(len, strlist))

        return answer

     

    def solution(strlist):

        return [len(str) for str in strlist]

     

    def solution(strlist):

        return list(map(lambda v: len(v), strlist))

     

     

    • 짝수 홀수 개수
    •  

    문제 설명

    정수가 담긴 리스트 num_list가 주어질 때, num_list의 원소 중 짝수와 홀수의 개수를 담은 배열을 return 하도록 solution 함수를 완성해보세요.

     

    제한사항

    • 1 ≤ num_list의 길이 ≤ 100
    • 0 ≤ num_list의 원소 ≤ 1,000

     

    입출력 예

    num_list result
    [1, 2, 3, 4, 5] [2, 3]
    [1, 3, 5, 7] [0, 4]

     

    def solution(num_list):

        answer = []

        ae=[]

        ao=[]

        for i in num_list:

            if i%2 ==0:

                ae.append(i)

            else:

                ao.append(i)

        answer =[len(ae),len(ao)]

        return answer

     

    def solution(num_list):

        answer = [0,0]

        for n in num_list:

            answer[n%2]+=1

        return answer

     

    def solution(num_list):

        answer = [0,0]

        for n in num_list:

            answer[n%2]+=1

        return answer

     

    def solution(num_list):

        odd = sum(1 for n in num_list if n % 2)

        return [len(num_list) - odd, odd]

     

    def solution(num_list):

        div_num_list = list(map(lambda v: v % 2, num_list))

        return [div_num_list.count(0), div_num_list.count(1)]

     

     

    def solution(num_list):

        answer = [0,0]

     

        for num in num_list:

            if num % 2 == 0:

                answer[0] += 1

            else:

                answer[1] += 1

     

        return answer

     

    • 특정 문자 제거하기

    • 문제 설명

    문자열 my_string과 문자 letter이 매개변수로 주어집니다. my_string에서 letter를 제거한 문자열을 return하도록 solution 함수를 완성해주세요.

     

    제한사항

    • 1 ≤ my_string의 길이 ≤ 100
    • letter은 길이가 1인 영문자입니다.
    • my_string과 letter은 알파벳 대소문자로 이루어져 있습니다.
    • 대문자와 소문자를 구분합니다.

     

    입출력 예

    my_string letter result
    "abcdef" "f" "abcde"
    "BCBdbe" "B" "Cdbe"

     

    def solution(my_string, letter):

        answer = ''

        n1= my_string.replace(letter,'')

        n2=''.join(n1)

        answer =n2

        return answer

     

    def solution(my_string, letter):

        return my_string.replace(letter, '')

     

    def solution(my_string, letter):

        answer = ''

        for string in my_string:

            if string != letter:

                answer += string

        return answer

     

    def solution(my_string, letter):

        return ''.join([c for c in my_string if c != letter])

     

    def solution(my_string, letter):

        answer = my_string.replace(letter, "")

        return answer

     

     

    • 모음 제거
    •  

    문제 설명

    영어에선 a, e, i, o, u 다섯 가지 알파벳을 모음으로 분류합니다. 문자열 my_string이 매개변수로 주어질 때 모음을 제거한 문자열을 return하도록 solution 함수를 완성해주세요.

     

    제한사항

    • my_string은 소문자와 공백으로 이루어져 있습니다.
    • 1 ≤ my_string의 길이 ≤ 1,000

     

    입출력 예

    my_string result
    "bus" "bs"
    "nice to meet you" "nc t mt y"

     

    def solution(my_string):

        answer = ''

        a1=[]

        vo=['a','e','i','o','u']

        for i in my_string:

            if i not in vo:

                a1.append(i)

        answer = ''.join(map(str,a1))

                

        return answer

     

    def solution(my_string):

        return "".join([i for i in my_string if not(i in "aeiou")])

     

    def solution(my_string):

        vowels = ['a','e','i','o','u']

        for vowel in vowels:

            my_string = my_string.replace(vowel, '')

        return my_string

     

     

     

    import re

     

    def solution(my_string):

        return re.sub(r"a|e|i|o|u", "", my_string)

     

     

     

    • 옷가게 할인 받기
    •  

    문제 설명

    머쓱이네 옷가게는 10만 원 이상 사면 5%, 30만 원 이상 사면 10%, 50만 원 이상 사면 20%를 할인해줍니다.
    구매한 옷의 가격 price가 주어질 때, 지불해야 할 금액을 return 하도록 solution 함수를 완성해보세요.

     

    제한사항

    • 10 ≤ price ≤ 1,000,000
    • 소수점 이하를 버린 정수를 return합니다.

     

    def solution(price):

        if price >= 500000:

            return int(price * 0.8)

        elif price >= 300000:

            return int(price * 0.9)

        elif price >= 100000:

            return int(price * 0.95)

        else:

            return price

     

    def solution(price):

        discount_rates = {500000: 0.8, 300000: 0.9, 100000: 0.95, 0: 1}

        for discount_price, discount_rate in discount_rates.items():

            if price >= discount_price:

                return int(price * discount_rate)

     

    def solution(price):

        if price>=500000:

            price = price *0.8

        elif price>=300000:

            price = price *0.9

        elif price>=100000:

            price = price * 0.95

        return int(price)

     

    def solution(price):

        return (100 - len([1 for k in [100000, 300000, 500000, 500000] if k<=price])*5) * pri

     

     

    • 머쓱이보다 키 큰 사람
    •  

    문제 설명

    머쓱이는 학교에서 키 순으로 줄을 설 때 몇 번째로 서야 하는지 궁금해졌습니다. 머쓱이네 반 친구들의 키가 담긴 정수 배열 array와 머쓱이의 키 height가 매개변수로 주어질 때, 머쓱이보다 키 큰 사람 수를 return 하도록 solution 함수를 완성해보세요.

     

    제한사항

    • 1 ≤ array의 길이 ≤ 100
    • 1 ≤ height ≤ 200
    • 1 ≤ array의 원소 ≤ 200

     

    입출력 예

    array height result
    [149, 180, 192, 170] 167 3
    [180, 120, 140] 190 0

     

    def solution(array, height):

        answer = 0

        array.sort(reverse=True)

        for i,t in enumerate(array):

            if t > height:

                answer +=1

            else:

                break

            

        

        return answer

     

    def solution(array, height):

        answer = 0

        array.sort(reverse=True)

        for t in array:

            if t > height:

                answer +=1

            else:

                break

            

        

        return answer

     

    예술

    def solution(array, height):

        array.append(height)

        array.sort(reverse=True)

        return array.index(height)

     

    • 점의 위치 구하기
    •  

    문제 설명

    사분면은 한 평면을 x축과 y축을 기준으로 나눈 네 부분입니다. 사분면은 아래와 같이 1부터 4까지 번호를매깁니다.

     

    • x 좌표와 y 좌표가 모두 양수이면 제1사분면에 속합니다.
    • x 좌표가 음수, y 좌표가 양수이면 제2사분면에 속합니다.
    • x 좌표와 y 좌표가 모두 음수이면 제3사분면에 속합니다.
    • x 좌표가 양수, y 좌표가 음수이면 제4사분면에 속합니다.

    x 좌표 (x, y)를 차례대로 담은 정수 배열 dot이 매개변수로 주어집니다. 좌표 dot이 사분면 중 어디에 속하는지 1, 2, 3, 4 중 하나를 return 하도록 solution 함수를 완성해주세요.

     

    제한사항

    • dot의 길이 = 2
    • dot[0]은 x좌표를, dot[1]은 y좌표를 나타냅니다
    • -500 ≤ dot의 원소 ≤ 500
    • dot의 원소는 0이 아닙니다.

     

    def solution(dot):

        answer = 0

        x,y = dot

        if x>0 and y>0:

            answer =1

        elif x<0 and y>0:

            answer =2

        elif x<0 and y<0:

            answer =3

        else:

            answer =4

        return answer

     

    def solution(dot):

        quad = [(3,2),(4,1)]

        return quad[dot[0] > 0][dot[1] > 0]

     

    def solution(dot):

        a, b = 1, 0

        if dot[0]*dot[1] > 0:

            b = 1

        if dot[1] < 0:

            a = 2

        return 2*a-b

     

    def solution(dot):

        x,y = dot

        if x*y>0:

            return 1 if x>0 else 3

        else:

            return 4 if x>0 else 2

    • 중복된 숫자 개수

    • 문제 설명

    정수가 담긴 배열 array와 정수 n이 매개변수로 주어질 때, array에 n이 몇 개 있는 지를 return 하도록 solution 함수를 완성해보세요.

     

    제한사항

    • 1 ≤ array의 길이 ≤ 100
    • 0 ≤ array의 원소 ≤ 1,000
    • 0 ≤ n ≤ 1,000

     

    입출력 예

    array n result
    [1, 1, 2, 3, 4, 5] 1 2
    [0, 2, 3, 4] 1 0

    def solution(array, n):

        answer = 0

        for i in array:

            if i ==n:

                answer +=1

        return answer

     

    def solution(array, n):

        return array.count(n)

     

    def solution(array, n):

        return sum(1 for x in array if x == n)

     

    def solution(array, n):

        answer = 0

        for i in range(0, len(array)):

            if n == array[i] :

                answer += 1

        return answer

     

     

    def solution(array, n):

        answer = array.count(n)

        return answer

     

     

    • 최댓값 만들기 (1)
    •  

    문제 설명

    정수 배열 numbers가 매개변수로 주어집니다. numbers의 원소 중 두 개를 곱해 만들 수 있는 최댓값을 return하도록 solution 함수를 완성해주세요.

     

    제한사항

    • 0 ≤ numbers의 원소 ≤ 10,000
    • 2 ≤ numbers의 길이 ≤ 100

     

    입출력 예

    numbers result
    [1, 2, 3, 4, 5] 20
    [0, 31, 24, 10, 1, 9] 744

     

    def solution(numbers):

        answer = 0

        numbers.sort()

        answer = numbers[-1]*numbers[-2]

        return answer

     

    def solution(numbers):

        num1 = 0

        num2 = 0

        answer = 0

     

        numbers.sort()

     

        num1 = numbers.pop()

        num2 = numbers.pop()

        answer = num1 * num2

     

        return answer

     

    def solution(numbers):

        numbers.sort(reverse=True)

        return numbers[0]*numbers[1]

     

    • 배열의 유사도

    •  

    문제 설명

    두 배열이 얼마나 유사한지 확인해보려고 합니다. 문자열 배열 s1과 s2가 주어질 때 같은 원소의 개수를 return하도록 solution 함수를 완성해주세요.

     

    제한사항

    • 1 ≤ s1, s2의 길이 ≤ 100
    • 1 ≤ s1, s2의 원소의 길이 ≤ 10
    • s1과 s2의 원소는 알파벳 소문자로만 이루어져 있습니다
    • s1과 s2는 각각 중복된 원소를 갖지 않습니다.

     

    입출력 예

    s1 s2 result
    ["a", "b", "c"] ["com", "b", "d", "p", "c"] 2
    ["n", "omg"] ["m", "dot"] 0

    def solution(s1, s2):

        answer = 0

        for i in s1:

            if i in s2:

                answer +=1

        return answer

     

    예술

     

     

    def solution(s1, s2):

        return len(set(s1)&set(s2));

     

    def solution(s1, s2):

        answer = 0

     

        for word in s1:

            if word in s2:

                answer += 1

            else:

                continue

     

        return answer

     

    def solution(s1, s2):

        dic = {i:1 for i in s1}

        answer = sum(dic.get(j,0)for j in s2)

        return answer

     

     

    def solution(s1, s2):

        s1 = set(s1)

        s2 = set(s2)

        return len(s1.intersection(s2))

     

     

    • 삼각형의 완성조건 (1)
    •  

    문제 설명

    선분 세 개로 삼각형을 만들기 위해서는 다음과 같은 조건을 만족해야 합니다.

    • 가장 긴 변의 길이는 다른 두 변의 길이의 합보다 작아야 합니다.

    삼각형의 세 변의 길이가 담긴 배열 sides이 매개변수로 주어집니다. 세 변으로 삼각형을 만들 수 있다면 1, 만들 수 없다면 2를 return하도록 solution 함수를 완성해주세요.

     

    제한사항

    • sides의 원소는 자연수입니다.
    • sides의 길이는 3입니다.
    • 1 ≤ sides의 원소 ≤ 1,000

     

    입출력 예

    sides result
    [1, 2, 3] 2

     

    def solution(sides):

        answer = 0

        sides.sort()

        if sides[-1]<(sides[-2]+sides[-3]):

            answer =1

        else:

            answer =2

        return answer

     

    예술

    def solution(sides):

        return 1 if max(sides) < (sum(sides) - max(sides)) else 2

     

     

    def solution(sides):

        sides.sort()

        return 1 if sides[0]+sides[1]>sides[2] else 2

     

    def solution(sides):

        answer = 0

        sides.sort()

        a, b, c = sides[0], sides[1], sides[2]

        if a + b > c:

            return 1

        return 2

     

    def solution(sides):

        c = max(sides)

        sides.remove(c)

        a = sum(sides)

     

        return 1 if c < a else 2

     

    • 순서쌍의 개수

    •  

    문제 설명

    순서쌍이란 두 개의 숫자를 순서를 정하여 짝지어 나타낸 쌍으로 (a, b)로 표기합니다. 자연수 n이 매개변수로 주어질 때 두 숫자의 곱이 n인 자연수 순서쌍의 개수를 return하도록 solution 함수를 완성해주세요.

     

    제한사항

    • 1 ≤ n ≤ 1,000,000

     

    입출력 예

    n result
    20 6
    100 9

     

    def solution(n):

        answer = 0

        for i in range(1,n+1):

            if n%i ==0:

                answer +=1

        return answer

     

    ``````````````````````~~~~~~~~~~~~~~~~~~~~~~~~

    def solution(n):

        return len(list(filter(lambda v: n % (v+1) == 0, range(n))))

     

    def solution(n):

        return len([number for number in range(1, n+1) if n%number == 0])

     

    def solution(n):

        answer =0 

        for i in range(n):

            if n % (i+1) ==0:

                answer +=1

        return answer

     

    def solution(n):

        answer = 0

        for i in range(1, int(n ** 0.5) + 1):

            if n % i == 0:

                answer += 2

     

                if i * i == n:

                    answer -= 1

     

        return answer

    `````````````~~~~~~~~~~~~

     

     

    • 짝수는 싫어요
    •  

    문제 설명

    정수 n이 매개변수로 주어질 때, n 이하의 홀수가 오름차순으로 담긴 배열을 return하도록 solution 함수를 완성해주세요.

     

    제한사항

    • 1 ≤ n ≤ 100

     

    입출력 예

    n result
    10 [1, 3, 5, 7, 9]
    15 [1, 3, 5, 7, 9, 11, 13, 15]

    입출력 예 설명

    입출력 #1

    • 10 이하의 홀수가 담긴 배열 [1, 3, 5, 7, 9]를 return합니다.

     

    def solution(n):

        answer = []

        for i in range(1,n+1):

            if i %2 ==1:

                answer.append(i)

        return answer

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    def solution(n):

        return [i for i in range(1, n+1, 2)]

     

    def solution(n):

        return [x for x in range(n + 1) if x % 2]

    def solution(n):

        n = (n+1)//2

        return [2*i+1 for i in range(n)]

     

    def solution(n):

        return list(range(1, n+1, 2))

     

    def solution(n):

        answer = []

     

        for i in range(1, n + 1):

            if i % 2 == 1:

                answer.append(i)

     

        return answer

     

     

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    • 숨어있는 숫자의 덧셈 (1)  이거 틀렸음


    문제 설명

    문자열 my_string이 매개변수로 주어집니다. my_string안의 모든 자연수들의 합을 return하도록 solution 함수를 완성해주세요.

     

    제한사항

    • 1 ≤ my_string의 길이 ≤ 1,000
    • my_string은 소문자, 대문자 그리고 한자리 자연수로만 구성되어있습니다.

     

    입출력 예

    my_string result
    "aAb1B2cC34oOp" 10
    "1a2b3c4d123" 16

    두개 비교해야 한다 문자 하나씩과 아님 한꺼번에 한거랑

    def solution(my_string):

        num_list = []

        answer = 0

        for s in my_string:

            if s.isdigit():

                num_list.append(int(s))

        if num_list:

            answer = sum(num_list)

        return answer

     

     

    def solution(my_string):

        num_str = ""

        answer = 0

        for s in my_string:

            if s.isdigit():

                num_str += s

            else:

                if num_str:

                    answer += int(num_str)

                    num_str = ""

        if num_str:

            answer += int(num_str)

        return answer

     

    def solution(my_string):

        return sum(int(i) for i in my_string if i.isdigit())

     

    def solution(my_string):

        answer = 0

        for i in my_string:

            try:

                answer = answer + int(i)

            except:

                pass

     

        return answer

     

     

     

    import re

     

    def solution(my_string):

        return sum(int(n) for n in re.sub('[^1-9]', '', my_string))

     

     

     

     

     

    def solution(my_string):

        answer = 0

        number = ['0','1','2','3','4','5','6','7','8','9']

     

        for i in range(len(my_string)):

            if my_string[i] in number:

                answer += int(my_string[i])

            else:

                continue

     

        return answer

     

     

    def solution(my_string):

        answer = 0

        for c in my_string:

            if c.isnumeric():

                answer += int(c)

        return answer

     

     

     

     

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

     

    • 문자열안에 문자열

    • 문제 설명

    문자열 str1, str2가 매개변수로 주어집니다. str1 안에 str2가 있다면 1을 없다면 2를 return하도록 solution 함수를 완성해주세요.

     

    제한사항

    • 1 ≤ str1의 길이 ≤ 100
    • 1 ≤ str2의 길이 ≤ 100
    • 문자열은 알파벳 대문자, 소문자, 숫자로 구성되어 있습니다.

     

    입출력 예

    str1 str2 result
    "ab6CDE443fgh22iJKlmn1o" "6CD" 1
    "ppprrrogrammers" "pppp" 2
    "AbcAbcA" "AAA" 2

    def solution(str1, str2):

        answer = 0

        if str2 in str1:

            answer = 1

        else: 

            answer =2

        return answer

     

     

    def solution(str1, str2):

        return 1 if str2 in str1 else 2

     

    def solution(str1, str2):

        return 1 + int(str2 not in str1)

     

    def solution(str1, str2):

        if str1.count(str2):

            return 1

        else:

            return 2

     

     

     

     

    ₩₩₩~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    • 제곱수 판별하기

    문제 설명

    어떤 자연수를 제곱했을 때 나오는 정수를 제곱수라고 합니다. 정수 n이 매개변수로 주어질 때, n이 제곱수라면 1을 아니라면 2를 return하도록 solution 함수를 완성해주세요.

     

    제한사항

    • 1 ≤ n ≤ 1,000,000

     

    입출력 예

    n result
    144 1
    976 2

    def solution(n):

        answer = 0

        for i in range(1,n+1):

            if n==i*i:

                answer +=1

            else:

                answer +=2 

        

           

        return answer

     

    def solution(n):

        answer = 0

        for i in range(1, n+1):

            if n == i * i:

                answer = 1

                break

        else:

            answer = 2

        return answer

     

    def solution(n):

        return 1 if (n ** 0.5).is_integer() else 2

     

    def solution(n):

        if n**(1/2) == int(n**(1/2)) :

            return 1

        else :

            return 2

     

    def solution(n):

        return 1 if (n ** 0.5) % 1 == 0 else 2

     

     

    • 세균 증식
    •  

    문제 설명

    어떤 세균은 1시간에 두배만큼 증식한다고 합니다. 처음 세균의 마리수 n과 경과한 시간 t가 매개변수로 주어질 때 t시간 후 세균의 수를 return하도록 solution 함수를 완성해주세요.

     

    제한사항

    • 1 ≤ n ≤ 10
    • 1 ≤ t ≤ 15

     

    def solution(n, t):

        answer = 0

        answer = n*(2**t)

     

        return answer

     

     

    def solution(n, t):

        return n << t

     

    def solution(n, t):

        answer = 2**t * n

        return answer

     

    def solution(n, t):

        return n*(2**t)

     

    def solution(n, t):

        for i in range(t) :

            n *= 2

        return n

     

    !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    def solution(hp):

        answer = 0

        a = hp//5 

        b = (hp -5*a)//3

        c = hp -(5*a) -(3*b)

        answer = a+b+c

        return answerdef solution(hp):    

        return hp // 5 + (hp % 5 // 3) + ((hp % 5) % 3)

     

    예술

     

    def solution(hp):

        answer = 0

        for ant in [5, 3, 1]:

            d, hp = divmod(hp, ant)

            answer += d

        return answer

     

    주어진 코드는 어떤 몬스터의 체력(hp)을 입력으로 받아서, 세 종류의 공격을 가하는 개미들에 의해 몬스터의 체력을 모두 소모하는데 필요한 최소한의 공격 횟수를 구하는 함수입니다.

    • hp: 몬스터의 체력을 나타내는 정수값입니다.

    아래는 코드의 동작과정을 설명합니다:

    • answer = 0: answer 변수는 공격 횟수를 누적하여 저장하는 용도로 사용됩니다. 초기값은 0으로 설정합니다.
    • for ant in [5, 3, 1]:: ant 변수를 5, 3, 1 순서대로 반복합니다. 이 for 루프는 세 종류의 개미들이 가하는 공격에 대한 처리를 수행합니다.
    • d, hp = divmod(hp, ant): divmod 함수를 사용하여 몬스터의 체력 hp를 ant로 나눈 몫과 나머지를 구합니다. d는 몫을 나타내며, 몬스터의 체력에서 개미들의 공격으로 소모된 부분이 됩니다. hp는 나머지를 나타내며, 남은 체력이 됩니다.
    • answer += d: d를 answer에 누적하여 공격 횟수를 계산합니다.
    • return answer: 최종적으로 구한 공격 횟수인 answer를 반환합니다.

     

     

    def solution(hp):

        answer = 0

        ant = [5,3,1]

     

        for item in ant:

            if hp == 0:

                break

            answer += hp//item

            hp = hp%item

     

        return answer

    !!!!!!!!!!!!!!!~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    • 암호 해독
    •  

    문제 설명

    군 전략가 머쓱이는 전쟁 중 적군이 다음과 같은 암호 체계를 사용한다는 것을 알아냈습니다.

    • 암호화된 문자열 cipher를 주고받습니다.
    • 그 문자열에서 code의 배수 번째 글자만 진짜 암호입니다.

    문자열 cipher와 정수 code가 매개변수로 주어질 때 해독된 암호 문자열을 return하도록 solution 함수를 완성해주세요.

     

    제한사항

    • 1 ≤ cipher의 길이 ≤ 1,000
    • 1 ≤ code ≤ cipher의 길이
    • cipher는 소문자와 공백으로만 구성되어 있습니다.
    • 공백도 하나의 문자로 취급합니다.

     

    둘다 내답 예술

    def solution(cipher, code):

        a = cipher[code-1:len(cipher):code]

        return a

     

    def solution(cipher, code):

        a =''

        for i,chr in enumerate(cipher):

            if (i+1) % code ==0:

                a +=cipher[i]

        return a

        

        

    def solution(cipher, code):

        answer = cipher[code-1::code]

        return answer

     

    def solution(cipher, code):

     

        return cipher[code-1::code]

     

    def solution(cipher, code):

        return ''.join(cipher[i] for i in range(code-1,len(cipher),code))

     

    def solution(cipher, code):

        answer=''

        index=list(range(code,len(cipher)+1,code))

        for i in index:

            answer+=cipher[i-1]

        return answer

     

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

     

    • 가위 바위 보

    •  

    문제 설명

    가위는 2 바위는 0 보는 5로 표현합니다. 가위 바위 보를 내는 순서대로 나타낸 문자열 rsp가 매개변수로 주어질 때, rsp에 저장된 가위 바위 보를 모두 이기는 경우를 순서대로 나타낸 문자열을 return하도록 solution 함수를 완성해보세요.

     

    제한사항

    • 0 < rsp의 길이 ≤ 100
    • rsp와 길이가 같은 문자열을 return 합니다.
    • rsp는 숫자 0, 2, 5로 이루어져 있습니다.

     

    입출력 예

    rsp result
    "2" "0"
    "205" "052"

    내거

     

    def solution(rsp):

        answer = ''

        for i in rsp:

            

            if i=="2":

                answer +="0"

            elif i == '0':

                answer +="5"

            elif i=='5':

                answer +='2'

                

        return answer

     

    남의 거 

    def solution(rsp):

        d = {'0':'5','2':'0','5':'2'}

        return ''.join(d[i] for i in rsp)

    주어진 코드는 문자열 rsp를 입력으로 사용하고 사전 d에 지정된 매핑을 기반으로 새 문자열을 반환하는 solution(rsp) 함수를 정의합니다.

    • rsp: 가위바위보(RSP) 게임 선택을 나타내는 문자열. 문자열은 문자 '0', '2' 및 '5'를 포함할 수 있습니다.

    다음은 코드 작동 방식에 대한 설명입니다.

    1. d = {'0':'5', '2':'0', '5':'2'}: 이 행은 키가 플레이어의 RSP 선택을 나타내고 값이 RSP 규칙에 따라 상대의 해당 선택을 나타내는 사전 d를 정의합니다. 예를 들어 플레이어가 '0'(바위)을 선택하면 상대방은 '5'(종이)를 선택해야 합니다.
    2. ''.join(d[i] for i in rsp): 이 줄은 사전 d에 지정된 매핑을 입력 rsp의 각 문자에 적용하고 매핑된 값으로 새 문자열을 만듭니다. 목록 내포를 사용하여 rsp의 각 문자 i를 반복하고 사전 d에서 해당 값을 찾고 매핑된 문자를 결합하여 최종 출력 문자열을 만듭니다.

    이 기능이 어떻게 작동하는지 보여주는 예를 살펴보겠습니다.

    result = solution('2050')

    print(result)  # Output: '2505'

     

    # Explanation:

    # The input string is '2050'.

    # The mapping based on the dictionary d will be:

    # '2' -> '0' (Paper -> Rock)

    # '0' -> '5' (Rock -> Paper)

    # '5' -> '2' (Paper -> Scissors)

    # '0' -> '5' (Rock -> Paper)

    # The resulting string will be '2505'.

    이 예에서 함수는 사전 d의 RSP 규칙에 따라 RSP 선택 '2050'을 상대의 해당 선택 '2505'에 매핑합니다. 그런 다음 함수는 새 문자열 '2505'를 반환합니다.

     

     

    def solution(rsp):

        rsp =rsp.replace('2','s')

        rsp =rsp.replace('5','p')

        rsp =rsp.replace('0','r')

        rsp =rsp.replace('r','5')

        rsp =rsp.replace('s','0')

        rsp =rsp.replace('p','2')

        return rsp

     

     

    def solution(rsp):

        return rsp.translate(str.maketrans('025', '502'))

     

    def solution(rsp):

        answer = ''

        for i in list(map(int, rsp)):

            if i == 0:

                answer += str(5)

            elif i == 2:

                answer += str(0)

            else:

                answer += str(2)

        return answer

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    • 대문자와 소문자
    •  

    문제 설명

    문자열 my_string이 매개변수로 주어질 때, 대문자는 소문자로 소문자는 대문자로 변환한 문자열을 return하도록 solution 함수를 완성해주세요.

     

    제한사항

    • 1 ≤ my_string의 길이 ≤ 1,000
    • my_string은 영어 대문자와 소문자로만 구성되어 있습니다.

     

    입출력 예

    my_string result
    "cccCCC" "CCCccc"
    "abCdEfghIJ" "ABcDeFGHij"

    def solution(my_string):

        return my_string.swapcase()

     

    def solution(my_string):

        answer = ''

     

        for i in my_string:

            if i.isupper():

                answer+=i.lower()

            else:

                answer+=i.upper()

        return answer

     

    def solution(my_string):

        answer = ''

        upper = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'

        lower = 'abcdefghijklmnopqrstuvwxyz'

        for c in my_string:

            if c in upper:

                answer+=c.lower()

            elif c in lower:

                answer+=c.upper()

        return answer

     

    def solution(my_string):

        return ''.join([x.lower() if x.isupper() else x.upper() for x in my_string])

     

    def solution(my_string):

        N = len(my_string)

        answer = ''.join([my_string[i].upper() if my_string[i].islower() else my_string[i].lower() for i in range(N)])

        return answer

     

    def solution(my_string):

        answer = ''.join(list(map(lambda x: x.upper() if x.islower() else x.lower(),my_string)))

        return answer

     

    • 문자열 정렬하기 (1)
    •  

    문제 설명

    문자열 my_string이 매개변수로 주어질 때, my_string 안에 있는 숫자만 골라 오름차순 정렬한 리스트를 return 하도록 solution 함수를 작성해보세요.

     

    제한사항

    • 1 ≤ my_string의 길이 ≤ 100
    • my_string에는 숫자가 한 개 이상 포함되어 있습니다.
    • my_string은 영어 소문자 또는 0부터 9까지의 숫자로 이루어져 있습니다. - - -

    입출력 예

    my_string result
    "hi12392" [1, 2, 2, 3, 9]
    "p2o4i8gj2" [2, 2, 4, 8]
    "abcde0" [0]

    def solution(my_string):

        answer = []

        for i in my_string:

            if i.isdigit():

                answer.append(int(i))

        answer.sort()

       return answer

     

        def solution(my_string):

        return sorted([int(c) for c in my_string if c.isdigit()])

     

    def solution(my_string):

        return sorted(map(int, filter(lambda s: s.isdigit(), my_string)))

     

    import re

     

    def solution(my_string):

        return sorted(map(int, (list(re.sub('[^0-9]', '', my_string)))))

     

    def solution(my_string):

        answer = []

        for i in my_string:

            if i.isdigit():

                answer.append(int(i))

        answer.sort()

        return answer

     

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

     

    • 주사위의 개수

     

    문제 설명

    머쓱이는 직육면체 모양의 상자를 하나 가지고 있는데 이 상자에 정육면체 모양의 주사위를 최대한 많이 채우고 싶습니다. 상자의 가로, 세로, 높이가 저장되어있는 배열 box와 주사위 모서리의 길이 정수 n이 매개변수로 주어졌을 때, 상자에 들어갈 수 있는 주사위의 최대 개수를 return 하도록 solution 함수를 완성해주세요.

     

    def solution(box, n):

        answer = 0

     

        w = box[0]*box[1]

        garo = box[0]//n

        sero =box[1]//n

        heit = box[2]//n

        an = garo*sero*heit

        return an

     

    def solution(box, n):

        x, y, z = box

        return (x // n) * (y // n) * (z // n )

     

    def solution(box, n):

        answer = 1

        for b in box:

            answer *= b // n

        return answer

     

    import math

     

    def solution(box, n):

        return math.prod(map(lambda v: v//n, box)) ??????

     

    def solution(box, n):

        w,h,d = box[0]//n,box[1]//n,box[2]//n 

        return w*d*h

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    • 최댓값 만들기 (2)
    •  

    문제 설명

    정수 배열 numbers가 매개변수로 주어집니다. numbers의 원소 중 두 개를 곱해 만들 수 있는 최댓값을 return하도록 solution 함수를 완성해주세요.

     

    제한사항

    • -10,000 ≤ numbers의 원소 ≤ 10,000
    • 2 ≤ numbers 의 길이 ≤ 100

     

    입출력 예

    numbers result
    [1, 2, -3, 4, -5] 15
    [0, -31, 24, 10, 1, 9] 240
    [10, 20, 30, 5, 5, 20, 5] 600

    내 오답

    def solution(numbers):

        answer = 0

        numbers.sort()

        nls1 = []

        for i in numbers:

            n1 = numbers[i]*numbers[i+1]

            nls1.append(n1)

        nls1.sort()

        answer = nls1[-1]

        return answer

        

        

     

    def solution(numbers):

        numbers.sort()

        max_product = float('-inf')

     

        for i in range(len(numbers) - 1):

            product = numbers[i] * numbers[i + 1]

            max_product = max(max_product, product)

     

        return max_product

     

        for i in numbers:: 이 루프에서 i는 numbers 리스트 내 요소들의 값을 바로 갖습니다. 즉, numbers[i]와 numbers[i+1]을 사용하려고 하면 유효한 범위를 벗어나는 요소에 접근하게 됩니다. 따라서 인덱스를 사용하여 리스트 내 요소에 접근해야 합니다.

    • nls1 = []: 이 부분에서 빈 리스트 nls1을 초기화하였으나, 이후의 루프에서 올바르게 사용되지 않습니다. 루프는 인접한 숫자들의 곱을 계산하려는 것 같지만, 실제로는 인접한 숫자들의 곱을 계산하여 nls1에 추가하는 로직이 빠져 있습니다.
    • 정렬(logic) 로직이 잘못되었습니다. 코드에서 numbers 리스트를 두 번 정렬합니다. 처음과 끝에서 정렬할 필요가 없습니다. 인접한 숫자들의 곱 중에서 최댓값을 찾는 것이 목적이기 때문입니다.

    이러한 문제를 수정하여 다음과 같이 코드를 작성할 수 있습니다:

    python

     

    def solution(numbers):

        numbers = sorted(numbers)

        return max(numbers[0] * numbers[1], numbers[-1]*numbers[-2]) 

     

    def solution(numbers):

        numbers.sort()

        return max(numbers[0] * numbers[1], numbers[-1] * numbers[-2])

     

    from itertools  import combinations as comb

     

    def solution(numbers):

        an_list=[]

        for i,j in comb(numbers,2):

            an_list.append(i*j)

        return max(an_list)

     

    def solution(numbers):

        numbers.sort()

        return max(numbers[0]*numbers[1],numbers[-2]*numbers[-1])

        

            

      가장 큰 수 찾기

    •  

    문제 설명

    정수 배열 array가 매개변수로 주어질 때, 가장 큰 수와 그 수의 인덱스를 담은 배열을 return 하도록 solution 함수를 완성해보세요.

     

    제한사항

    • 1 ≤ array의 길이 ≤ 100
    • 0 ≤ array 원소 ≤ 1,000
    • array에 중복된 숫자는 없습니다.

     

    입출력 예

    array result
    [1, 8, 3] [8, 1]
    [9, 10, 11, 8] [11, 2]

         

    def solution(array):

        answer = []

        for i,num in enumerate(array):

            

            y = array.index(max(array))

            x=max(array)

     

        answer =[x,y]

        return answer

     

    def solution(array):

        return [max(array), array.index(max(array))]

     

    def solution(array):

        val = max(array)

        return [val, array.index(val)]

     

    def solution(array):

        return sorted([[a, i] for i, a in enumerate(array)])[::-1][0]

    주어진 코드는 array 목록을 입력으로 사용하는 solution(array) 함수를 정의합니다. 이 함수는 인덱스와 함께 목록에서 가장 높은 값을 가진 요소를 찾는 것을 목표로 합니다.

    다음은 코드 작동 방식에 대한 설명입니다.

    1. [[a, i] for i, a in enumerate(array)]: 코드의 이 부분은 해당 인덱스 i와 함께 입력 목록 array의 각 요소 a를 반복하는 목록 내포입니다. 각 요소 a와 해당 인덱스 i에 대해 [a, i]를 포함하는 새 목록을 만듭니다. 이 새 목록에는 요소 a와 인덱스 i가 쌍으로 포함됩니다.
    2. sorted(...): 이전 단계의 목록 내포는 입력 목록의 각 요소에 대한 요소와 인덱스를 포함하는 쌍 목록을 만듭니다. 그러면 sorted() 함수가 이 쌍 목록에 적용됩니다. 기본적으로 sorted()는 원래 배열의 실제 요소인 각 쌍의 첫 번째 요소를 기준으로 목록을 오름차순으로 정렬합니다.
    3. [::-1]: 쌍 목록을 정렬한 후 코드는 [::-1]을 사용한 슬라이싱을 사용하여 정렬된 목록의 순서를 반대로 바꿉니다. 이는 목록이 원래 배열의 요소 값을 기준으로 내림차순으로 정렬됨을 의미합니다.
    4. [0]: 마지막으로 코드는 정렬된 목록에서 첫 번째 요소(가장 높은 값을 가진 요소)를 검색합니다. 목록은 내림차순이므로 값이 가장 높은 요소가 목록의 시작 부분에 있습니다.
    5. 이 함수는 가장 높은 값과 해당 인덱스가 있는 요소를 포함하는 목록인 결과를 반환합니다.

    예:

    예제를 통해 함수가 어떻게 작동하는지 살펴보겠습니다.

    result = solution([3, 7, 1, 9, 4])

    print(result)  # Output: [9, 3]

     

    # Explanation:

    # The input list is [3, 7, 1, 9, 4].

    # The list comprehension creates a list of pairs with elements and their corresponding indices:

    # [[3, 0], [7, 1], [1, 2], [9, 3], [4, 4]]

    # The sorted list based on the elements in descending order:

    # [[9, 3], [7, 1], [4, 4], [3, 0], [1, 2]]

    # The first element from the sorted list is [9, 3], which is the element with the highest value (9) and its index (3).

    이 예제에서 함수는 목록에서 가장 높은 값(9)을 가진 요소를 찾아 인덱스(3)와 함께 반환합니다.

     

     

    def solution(array):

        answer = [0, 0]

        num = array[0]

        for i in range(len(array)):

            if num < array[i]:

                num = array[i]

                answer[0] = num

                answer[1] = i

        return answer

     

     

    def solution(age):

        answer = ''

        alpa =['a','b','c','d','e','f','g','h','i','j']

        age = str(age)

        for r, al in enumerate(alpa):

            

            if p in age:

                answer +=alpa[int(p)-1]

                

        return answer

     

    • 외계행성의 나이    틀렸다 ???

    • 문제 설명

    우주여행을 하던 머쓱이는 엔진 고장으로 PROGRAMMERS-962 행성에 불시착하게 됐습니다. 입국심사에서 나이를 말해야 하는데, PROGRAMMERS-962 행성에서는 나이를 알파벳으로 말하고 있습니다. a는 0, b는 1, c는 2, ..., j는 9입니다. 예를 들어 23살은 cd, 51살은 fb로 표현합니다. 나이 age가 매개변수로 주어질 때 PROGRAMMER-962식 나이를 return하도록 solution 함수를 완성해주세요.

     

    제한사항

    • age는 자연수입니다.
    • age ≤ 1,000
    • PROGRAMMERS-962 행성은 알파벳 소문자만 사용합니다.

     

    입출력 예

    age result
    23 "cd"
    51 "fb"
    100 "baa"

    내 오답

    def solution(age):

        answer = ''

        alpa =['a','b','c','d','e','f','g','h','i','j']

        age = str(age)

        for r, al in enumerate(alpa):

            

            if p in age:

                answer +=alpa[int(p)-1]

                

        return answer

    쳇것

    def solution(age):

        alphabet_values = {0: 'a', 1: 'b', 2: 'c', 3: 'd', 4: 'e', 5: 'f', 6: 'g', 7: 'h', 8: 'i', 9: 'j'}

        

        # Convert the age number to its string representation based on the alphabet values

        result = ""

        while age > 0:

            digit = age % 10

            result = alphabet_values[digit] + result

            age //= 10

        

        return result

     

    def solution(age):

        age = str(age)

        age = age.replace("0", "a")

        age = age.replace("1", "b")

        age = age.replace("2", "c")

        age = age.replace("3", "d")

        age = age.replace("4", "e")

        age = age.replace("5", "f")

        age = age.replace("6", "g")

        age = age.replace("7", "h")

        age = age.replace("8", "i")

        age = age.replace("9", "j")

        return age

     

    def solution(age):

     

        return ''.join([chr(int(i)+97) for i in str(age)])

     

    def solution(age):

        conv = {'0':'a','1':'b','2':'c','3':'d','4':'e'

                ,'5':'f','6':'g','7':'h','8':'i','9':'j'}

        return ''.join(conv[i] for i in str(age))

     

    def solution(age):

        str_age = str(age)

        answer = ''

        lst =["a","b","c","d","e","f","g","h","i","j"]

        for ch in str_age:

            for i in range(0,10):

                if int(ch) == i:

                    answer += lst[i]

        return answer

     

    import string

     

    def solution(age):

        return "".join(map(lambda v: string.ascii_lowercase[int(v)], str(age)))

     

    'TIL( Today I Learned)' 카테고리의 다른 글

    2023.7.27.목요일  (1) 2023.07.27
    2023.7.26.수요일  (0) 2023.07.26
    2023.7.24.월요일. 100개  (0) 2023.07.24
    2023.7.23.일요일 D-8, "Forward, 8 days left" 96 to ?  (0) 2023.07.23
    2023.7.22.토요일  (0) 2023.07.22
Designed by Tistory.