본문 바로가기

전체 글63

프로그래머스: 행렬의 덧셈 | Python 행렬의 덧셈은 행과 열의 크기가 같은 두 행렬의 같은 행, 같은 열의 값을 서로 더한 결과가 됩니다. 2개의 행렬 arr1과 arr2를 입력받아, 행렬 덧셈의 결과를 반환하는 함수, solution을 완성해주세요. 1. 처음에 한 것 def solution(arr1, arr2): answer=[] for i in arr1: sum=[] for j in arr2: sum.append(arr1[i][j]+arr2[i][j]) answer.append(sum) return answer 문제점 - arr1이 이중리스트일 경우에는 for i in arr1으로 순회하면 각 i에는 리스트가 할당되기 때문에 안됩니다. 대신에 인덱스를 사용하여 각 행에 접근해야 합니다. 2. 정답 def solution(arr1, ar.. 2024. 1. 3.
프로그래머스: 나누어 떨어지는 숫자 배열 | Python array의 각 element 중 divisor로 나누어 떨어지는 값을 오름차순으로 정렬한 배열을 반환하는 함수, solution을 작성해주세요. divisor로 나누어 떨어지는 element가 하나도 없다면 배열에 -1을 담아 반환하세요. 1. 풀이 def solution(arr, divisor): answer=[] for i in arr: if i%divisor==0: answer.append(i) else: pass answer.sort() if len(answer) == 0: return [-1] else: return answer 2. 다른사람 풀이 def solution(arr, divisor): answer = [] for i in arr: if i % divisor == 0: answer... 2024. 1. 3.
프로그래머스: 서울에서 김서방 찾기 | Python String형 배열 seoul의 element중 "Kim"의 위치 x를 찾아, "김서방은 x에 있다"는 String을 반환하는 함수, solution을 완성하세요. seoul에 "Kim"은 오직 한 번만 나타나며 잘못된 값이 입력되는 경우는 없습니다. 1. 풀이 def solution(seoul): a = seoul.index("Kim") return ('김서방은 '+str(a)+'에 있다') 2. 다른사람 풀이 def findKim(seoul): return ("김서방은 {}에 있다".format(seoul.index('Kim')) 2024. 1. 2.
프로그래머스: 두 정수 사이의 합 | Python 두 정수 a, b가 주어졌을 때 a와 b 사이에 속한 모든 정수의 합을 리턴하는 함수, solution을 완성하세요. 예를 들어 a = 3, b = 5인 경우, 3 + 4 + 5 = 12이므로 12를 리턴합니다. 1. 풀이 def solution(a, b): list=[] answer = 0 if a b: a, b = b, a return sum(range(a, b + 1)) sum함수 사용법 sum 함수는 반복 가능한(iterable) 객체를 받아 그 안에 있는 모든 요소의 합을 계산합니다. sum(iterable, start=0) iterable: 합을 계산할 요소들이 들어있는 반복 가능한(iterable) 객체입니다. 주로 숫자로 이루어진 리스트, 튜플, 집합 등 start (선택적): 합산의 초기.. 2024. 1. 2.
[ 바닥부터 배우는 강화 학습 ] 05. MDP를 모를 때 밸류 평가하기 이번 챕터부터는 MDP의 전이 확률과 보상 함수를 모를 때에 대한 이야기이다. 주어진 수식을 이용해 정확한 값을 계산하는 대신, 수많은 샘플을 통해 근사하는 샘플 기반 방법론이 도입될 차례이다. MDP를 모른다는 것은 보상 함수 \(r_{s}^a\)와 전이 확률\(P_{ss'}^a\)을 모른다는 뜻이다. 즉, 실제로 액션을 해 보기 전까지는 보상을 얼마를 받을지도 모르고, 어떤 상태로 이동하게 될 지 확률 분포도 모르는 상황이다. 이를 모델 프리 라고 부른다. 모델 = 강화 학습에서 환경의 모델의 줄임말로, 에이전트의 액션에 대해 환경이 어떻게 응답할지 예측하기 위해 사용하는 모든것을 가리킨다. 에이전트의 액션에 대하여 환경이 어떻게 반응할지 알 수 있다면 에이전트의 입장에선 여러 가지 계획을 세워볼 수.. 2024. 1. 2.
프로그래머스: 자연수 뒤집어 배열로 만들기 | Python 자연수 n을 뒤집어 각 자리 숫자를 원소로 가지는 배열 형태로 리턴해주세요. 예를들어 n이 12345이면 [5,4,3,2,1]을 리턴합니다. 1. 처음에 한 것 def solution(n): list = [] for i in range(n[-1],0,-1): list.append(i) return list 문제점 - n은 자연수라고 명시되어 있지만, (n[-1],0,-1): 부분에서 n을 마치 리스트처럼 다루려고 시도하고 있습니다. 2. 재시도 def solution(n): list = [] for i in range(int(str(n)[-1]),0,-1): list.append(i) return list 실행시간이 오래 걸리는 것 같습니다. 아.. 문자열을 [::-1] 이라는 인덱스로 호출하면, 아주 .. 2024. 1. 2.
프로그래머스: 약수의 합 | Python 정수 n을 입력받아 n의 약수를 모두 더한 값을 리턴하는 함수, solution을 완성해주세요. 1. 처음에 한 것 def solution(n): list=[] answer= 0 for i in range(n): if n%i==0: list.append(i) for j in list: answer=j+answer return answer 문제점 - for i in range(n)에서 i가 0일 때, n % i에서 나누기가 수행되는데, 0으로 나누는 것은 불가능합니다. 이는 ZeroDivisionError를 발생시킵니다. 따라서 for i in range(1, n+1)로 수정해야 합니다. 2. 정답 def solution(n): list=[] answer= 0 for i in range(1,n+1): if.. 2024. 1. 2.
프로그래머스: 문자열 겹쳐쓰기 | Python 문자열 my_string, overwrite_string과 정수 s가 주어집니다. 문자열 my_string의 인덱스 s부터 overwrite_string의 길이만큼을 문자열 overwrite_string으로 바꾼 문자열을 return 하는 solution 함수를 작성해 주세요. 1. 풀이 def solution(my_string, overwrite_string, s): L1=my_string[:s] L2=my_string[s+len(overwrite_string):] answer = L1 + overwrite_string + L2 return answer 2024. 1. 2.
프로그래머스: 대소문자 바꿔서 출력하기 | Python 영어 알파벳으로 이루어진 문자열 str이 주어집니다. 각 알파벳을 대문자는 소문자로 소문자는 대문자로 변환해서 출력하는 코드를 작성해 보세요. str = input() for i in str: print(i.swapcase(), end="") 2024. 1. 2.
[ 바닥부터 배우는 강화 학습 ] 06. MDP를 모를 때 최고의 정책 찾기 이전 챕터에서 Prediction 문제를 풀었다면 이번 챕터에서는 Control 문제를 해결할 차례이다. 밸류를 계산할 수 있기 때문에 이를 이용해 정책을 찾는 것은 한결 쉽다. Q러닝도 이번 챕터에서 등장한다. 우리는 이제 주어진 정책을 평가하는 방법론인 MC와 TD를 알고있다. 이 방법론을 통해 어떠한 정책이 주어져도, MDP에 대한 정보를 몰라도 각 상태의 가치를 평가할 수 있게 되었다. 해당 정책을 따라서 에이전트가 움직이게 한 다음에 에이전트가 쌓은 경험으로부터 각 상태의 가치를 학습하는 방식이었다. 그러나 이는 주어진 정책을 평가하는 방법론일 뿐 최고의 정책을 찾는 방법에 대해 살펴보자. 여전히 상태 개수나 액션 개수가 적은 MDP 세팅이어야하며, MDP에 대한 정보를 모르고 있어야 한다. 이.. 2023. 11. 23.