-
2023.7.18TIL( Today I Learned) 2023. 7. 18. 23:02
7.18
- 조건에 맞게 수열 변환하기 3
문제 설명
정수 배열 arr와 자연수 k가 주어집니다.
만약 k가 홀수라면 arr의 모든 원소에 k를 곱하고, k가 짝수라면 arr의 모든 원소에 k를 더합니다.
이러한 변환을 마친 후의 arr를 return 하는 solution 함수를 완성해 주세요.
Who
Why
Why
나는 정수 배열 을 홀수, 짝수로 봤을까? K가 홀수 짝수인데
Def solution(arr,k):
# ? 정수배열은 맘대로 인덱싱할 수 있나? 문자열 str 처럼
#\n 일단 해본다
arr1 = str(arr) <- 정수배열 을 문자열로 @ 계산은 안돼므로 avel
if len(arr)%2 == 1:
for i in range(len(arr)):
~~~~~~~~~~~~~~~~~~~~~~~
def solution(num_list):
if len(num_list) >= 11:
return eval('+'.join(list(map(str, num_list))))
else:
return eval('*'.join(list(map(str, num_list))))
- solution 함수는 숫자 목록 num_list를 입력으로 사용합니다.
- 조건 if len(num_list) >= 11:은 num_list의 길이가 11보다 크거나 같은지 확인합니다. 이 조건이 참이면 목록에 11개 이상의 요소가 있음을 의미합니다.
- '+'.join(list(map(str, num_list))) 행에서 map(str, num_list)는 str 함수를 사용하여 num_list의 각 요소를 문자열로 변환합니다. 결과 문자열은 join 기능을 사용하여 '+' 구분 기호를 사용하여 결합됩니다. 이렇게 하면 '+'로 결합된 모든 요소가 포함된 문자열이 생성됩니다.
- eval 함수는 결과 문자열 표현식을 Python 표현식으로 평가하는 데 사용됩니다. 이 경우 문자열로 표시된 숫자에 대해 더하기를 수행합니다. 예를 들어 num_list가 [1, 2, 3]이면 '1+2+3' 표현식은 6으로 평가됩니다.
- num_list의 길이가 11보다 작으면(즉, 2단계의 조건이 거짓인 경우) else 블록 뒤에 코드가 이어집니다.
- '*'.join(list(map(str, num_list))) 행에서 3단계와 유사한 프로세스가 수행되지만 요소는 '*' 구분 기호를 사용하여 조인됩니다. 이렇게 하면 '*'로 결합된 모든 요소가 포함된 문자열이 생성됩니다.
- 그런 다음 문자열로 표현된 숫자에 곱셈을 수행하는 'eval'을 사용하여 결과 문자열 표현식을 평가합니다. 예를 들어 num_list가 [1, 2, 3]이면 '1*2*3' 표현식은 6으로 평가됩니다.
- 최종 결과는 solution 함수에 의해 반환됩니다.
요약하면 코드는 num_list의 길이를 확인하고 목록의 길이에 따라 요소에 대해 더하기 또는 곱하기를 수행합니다. eval 함수는 결과 문자열 표현식을 Python 표현식으로 평가하는 데 사용됩니다.
$$$$$
eval 함수는 결과 문자열 표현식을 Python 표현식으로 평가하는 데 사용됩니다. 이 경우 문자열로 표시된 숫자에 대해 더하기를 수행합니다. 예를 들어 num_list가 [1, 2, 3]이면 '1+2+3' 표현식은 6으로 평가됩니다.
깔끔한 코드
def solution(arr, k):
if k % 2 == 1:
arr = [num * k for num in arr]
else:
arr = [num + k for num in arr]
return arr
41. 정수 찾기
문제 설명
정수 리스트 num_list와 찾으려는 정수 n이 주어질 때, num_list안에 n이 있으면 1을 없으면 0을 return하도록 solution 함수를 완성해주세요.
def solution(num_list, n):
if n in num_list:
answer = 1
else:
answer = 0
return answer
—————————————————
def solution(num_list, n):
return int(n in num_list)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
my_list = ['a', 'b', 'c', 'd', 'e']
while my_list:
item = my_list.pop(0)
print(item)
@@@@@@@@@@@@@@@@@@@
Output
==>a,b,c,d,e
while my_list:는 my_list가 비어 있지 않은지 확인하는 while 루프 조건입니다. 즉, 목록에 요소가 있는 한 루프가 계속됩니다.
주어진 코드에서 my_list는 초기에 ['a', 'b', 'c', 'd', 'e']입니다. while 루프는 my_list에 요소가 있는 한 반복됩니다.
루프를 반복할 때마다 pop(0) 메서드를 사용하여 my_list에서 인덱스 0에 있는 요소를 제거하고 반환합니다. 팝된 요소는 변수 item에 저장되고 인쇄됩니다.
각 반복에서 요소가 목록에서 제거되므로 my_list가 비워질 때까지 루프가 계속됩니다. my_list가 비게 되면 while my_list: 조건이 False로 평가되고 루프가 종료됩니다.
요약하면 코드는 목록이 비워질 때까지 my_list의 각 요소를 하나씩 인쇄합니
- 수 조작하기 1
문제 설명
정수 n과 문자열 control이 주어집니다. control은 "w", "a", "s", "d"의 4개의 문자로 이루어져 있으며, control의 앞에서부터 순서대로 문자에 따라 n의 값을 바꿉니다.
- "w" : n이 1 커집니다.
- "s" : n이 1 작아집니다.
- "d" : n이 10 커집니다.
- "a" : n이 10 작아집니다.
위 규칙에 따라 n을 바꿨을 때 가장 마지막에 나오는 n의 값을 return 하는 solution 함수를 완성해 주세요.
???????
왜 n = 0이 사라져양 하는 거야
def solution(n, control):
# n=0 ———————…………tk사라져야 한다고
for p in control:
if p =="w":
n +=1
elif p =="s":
n -=1
elif p =="d":
n +=10
elif p =="a":
n -=10
return n
이런 방법도
def solution(n, control):
key = dict(zip(['w','s','d','a'], [1,-1,10,-10]))
return n + sum([key[c] for c in control])
이 코드는 control 문자열을 순회하면서 해당하는 동작에 따라 n 값을 변경하는 방법을 사용합니다. 코드의 동작은 다음과 같습니다.
- key라는 딕셔너리를 생성합니다. 이 딕셔너리는 control 문자에 따른 값을 저장합니다. 'w'에 대한 값은 1, 's'에 대한 값은 -1, 'd'에 대한 값은 10, 'a'에 대한 값은 -10으로 설정됩니다.
- control 문자열을 순회하면서 해당하는 동작에 대한 값을 key 딕셔너리에서 찾아서 리스트로 만듭니다. 예를 들어, control이 "wsd"인 경우, [1, -1, 10]이라는 리스트가 생성됩니다.
- 생성된 리스트의 합계를 n 값에 더한 후 결과를 반환합니다.
따라서 이 코드는 n 값을 초기 값으로 설정하고, control 문자열을 순회하면서 해당하는 동작에 따라 n 값을 변경하고 최종 결과를 반환합니다.
def solution(n, control):
answer = n
c = { 'w':1, 's':-1, 'd':10, 'a':-10}
for i in control:
answer += c[i]
return answer
이런것은 주로 딕셔너리를 많이 쓰나보다
문제 설명
1부터 6까지 숫자가 적힌 주사위가 두 개 있습니다. 두 주사위를 굴렸을 때 나온 숫자를 각각 a, b라고 했을 때 얻는 점수는 다음과 같습니다.
- a와 b가 모두 홀수라면 a2 + b2 점을 얻습니다.
- a와 b 중 하나만 홀수라면 2 × (a + b) 점을 얻습니다.
- a와 b 모두 홀수가 아니라면 |a - b| 점을 얻습니다.
두 정수 a와 b가 매개변수로 주어질 때, 얻는 점수를 return 하는 solution 함수를 작성해 주세요.
def solution(a, b):
if a%2==1 and b%2==1:
answer = a*a +b*b
elif (a+b)%2 ==1:
answer = 2*(a+b)
elif a%2==0 and b%2==0:
answer = abs(a-b)
return answer
def solution(a, b):
if a%2 and b%2: return a*a+b*b
elif a%2 or b%2: return 2*(a+b)
return abs(a-b)
조건 if a % 2 and b % 2는 a와 b가 모두 홀수인지 확인합니다.
파이썬에서 a % 2라는 표현은 a를 2로 나눈 나머지를 계산합니다. a가 홀수이면 나머지는 1이 됩니다. 마찬가지로 b가 홀수이면 b % 2도 1이 됩니다.
and 연산자는 두 피연산자가 모두 'True'이면 'True'를 반환하는 논리 연산자입니다. 이 경우 'a % 2 및 b % 2' 조건은 'a'와 'b'가 모두 홀수인 경우에만 'True'로 평가됩니다.
따라서 if 조건 if a % 2 and b % 2 내의 코드 블록은 a와 b가 모두 홀수일
44 글자 이어 붙여 문자열 만들기
문제 설명
문자열 my_string과 정수 배열 index_list가 매개변수로 주어집니다. my_string의 index_list의 원소들에 해당하는 인덱스의 글자들을 순서대로 이어 붙인 문자열을 return 하는 solution 함수를 작성해 주세요.
딕셔너리를 만드는 방법
keys = ['name', 'age', 'gender']
values = ['John', 25, 'Male']
my_dict = dict(zip(keys, values))
print(my_dict)
`````````2@@@@@@@@@@@@@@@@@@@@@@@@@@@@
딕셔너리 만드는 법
dic = {"1": "a", "2": "u", "3": "z"}
for a, b in dic.items():
print(f"{a} => {b}")
문제 설명
문자열 my_string과 정수 배열 index_list가 매개변수로 주어집니다. my_string의 index_list의 원소들에 해당하는 인덱스의 글자들을 순서대로 이어 붙인 문자열을 return 하는 solution 함수를 작성해 주세요.
def solution(my_string, index_list):
ls = ""
for i in index_list:
ls += my_string[i]
return ls
- 배열 비교하기
문제 설명
이 문제에서 두 정수 배열의 대소관계를 다음과 같이 정의합니다.
- 두 배열의 길이가 다르다면, 배열의 길이가 긴 쪽이 더 큽니다.
- 배열의 길이가 같다면 각 배열에 있는 모든 원소의 합을 비교하여 다르다면 더 큰 쪽이 크고, 같다면 같습니다.
두 정수 배열 arr1과 arr2가 주어질 때, 위에서 정의한 배열의 대소관계에 대하여 arr2가 크다면 -1, arr1이 크다면 1, 두 배열이 같다면 0을 return 하는 solution 함수를 작성해 주세요.
def solution(arr1, arr2):
if len(arr1)>len(arr2):
answer = 1
elif len(arr1 )< len(arr2):
answer =-1
elif len(arr1)== len(arr2):
if sum(arr1) >sum(arr2):
answer =1
elif sum(arr1) <sum(arr2):
answer =-1
else:
answer = 0
return answer
def solution(arr1, arr2):
return (len(arr1) > len(arr2)) - (len(arr2) > len(arr1)) or (sum(arr1) > sum(arr2)) - (sum(arr2) > sum(arr1))
'TIL( Today I Learned)' 카테고리의 다른 글
2023.7.20.목요일 (0) 2023.07.20 2023.7.19 (0) 2023.07.19 2023.7.17.월요일 . 프로그래머스 문제 (0) 2023.07.17 2023.7.16.일요일 파이썬 300제 done, 불필요한것은 skip. (0) 2023.07.16 2023.7.15.토요일 // 기초 300제 & 프로그래머스 문제 (0) 2023.07.15