-
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'를 포함할 수 있습니다.
다음은 코드 작동 방식에 대한 설명입니다.
- d = {'0':'5', '2':'0', '5':'2'}: 이 행은 키가 플레이어의 RSP 선택을 나타내고 값이 RSP 규칙에 따라 상대의 해당 선택을 나타내는 사전 d를 정의합니다. 예를 들어 플레이어가 '0'(바위)을 선택하면 상대방은 '5'(종이)를 선택해야 합니다.
- ''.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) 함수를 정의합니다. 이 함수는 인덱스와 함께 목록에서 가장 높은 값을 가진 요소를 찾는 것을 목표로 합니다.
다음은 코드 작동 방식에 대한 설명입니다.
- [[a, i] for i, a in enumerate(array)]: 코드의 이 부분은 해당 인덱스 i와 함께 입력 목록 array의 각 요소 a를 반복하는 목록 내포입니다. 각 요소 a와 해당 인덱스 i에 대해 [a, i]를 포함하는 새 목록을 만듭니다. 이 새 목록에는 요소 a와 인덱스 i가 쌍으로 포함됩니다.
- sorted(...): 이전 단계의 목록 내포는 입력 목록의 각 요소에 대한 요소와 인덱스를 포함하는 쌍 목록을 만듭니다. 그러면 sorted() 함수가 이 쌍 목록에 적용됩니다. 기본적으로 sorted()는 원래 배열의 실제 요소인 각 쌍의 첫 번째 요소를 기준으로 목록을 오름차순으로 정렬합니다.
- [::-1]: 쌍 목록을 정렬한 후 코드는 [::-1]을 사용한 슬라이싱을 사용하여 정렬된 목록의 순서를 반대로 바꿉니다. 이는 목록이 원래 배열의 요소 값을 기준으로 내림차순으로 정렬됨을 의미합니다.
- [0]: 마지막으로 코드는 정렬된 목록에서 첫 번째 요소(가장 높은 값을 가진 요소)를 검색합니다. 목록은 내림차순이므로 값이 가장 높은 요소가 목록의 시작 부분에 있습니다.
- 이 함수는 가장 높은 값과 해당 인덱스가 있는 요소를 포함하는 목록인 결과를 반환합니다.
예:
예제를 통해 함수가 어떻게 작동하는지 살펴보겠습니다.
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