본문 바로가기

알고리즘14

DeepSeek 정복기 [2] GRPO 수식 이해하기 (R1, DeepSeekMath) Group Relative Policy Optimization (GRPO) 알고리즘이란?GRPO는 딥시크가 직접 개발한 강화학습 알고리즘으로, 딥시크에서 DeepSeekMath 모델과 함께 2024년 4월에 발표한 바 있다.GRPO는 보통 정책(policy) 모델과 동일한 크기의 크리틱(critic) 모델을 두는 전통적인 강화 학습 방식과 달리, ‘그룹 점수(group scores)’를 활용하여 기준선(baseline), 즉 상대적인 보상(Advantage)을 추정함으로써 크리틱 모델을 생략하는 기법을 의미한다. 즉, DeepSeek GRPO는 강화 학습에서 정책 모델만 학습시키고, 크리틱 모델은 생략하여 연산 비용을 획기적으로 줄였다.그렇다면 GRPO는 정책 모델은 어떻게 학습시키는 걸까? 또, 크리틱.. 2025. 2. 7.
프로그래머스 코딩테스트 | 2단계 올바른 괄호 (Stack 알고리즘으로 풀이하기) 한동안 코테를 잠시 안풀었더니 효율성 테스트를 통과하는데 조금 헤맸던 문제입니다..! Stack 알고리즘을 활용하지 않고 문제를 풀었을 때 테스트 케이스 정확성은 통과하는 데 문제가 없으나, 효율성 테스트를 통과하기 어려우실 수 있습니다. 효율성 테스트까지 통과할 수 있는 문제 풀이 방법을 알려드릴게요 :) https://school.programmers.co.kr/learn/courses/30/lessons/12909 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 상황 : 괄호가 바르게 짝지어졌다는 것은 '(' 문자로 열렸으면 반드시 짝지어서 ').. 2024. 4. 23.
프로그래머스 코딩테스트 | 1단계 카카오 인턴십 키패드 누르기 문제 풀이 (파이썬) 프로그래머스 코딩테스트 1단계에 수록되어있는 카카오 인턴십 '키패드 누르기' 문제를 풀었습니다. 풀고 나서 코드가 좀 길다고 생각했는데 다른 사람들의 풀이를 보니 다들 비슷한 길이라서 안심이 되었습니다. (한심...ㅎ) 길다고 무조건 나쁜 코드, 짧다고 무조건 좋은 코드는 아니긴 합니다. 그래도 최대한 니트하고 간결하게 작성하고싶은 욕심이 드는 건 어쩔 수가 없네요 ㅎ_ㅎ (그럼에도 불구하고 제 코드는 항상 긴 편인거 같아요.) 저는 키패드에 좌표 개념을 도입하여 간단하게 문제를 풀어보았습니다. 문제 풀이 시간은 5분-10분정도로 그래도 최근에 연습했던 알고리즘 문제들에 비교하면 비교적 수월했던 문제였던 것 같습니다. 그럼 풀어보겠습니다! 문제 상황 : 이 전화 키패드에서 왼손과 오른손의 엄지손가락만을 .. 2024. 4. 4.
프로그래머스 코딩테스트 | 1단계 카드뭉치 문제 풀이 (파이썬 sorted와 key) https://school.programmers.co.kr/learn/courses/30/lessons/159994 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 프로그래머스 코딩테스트 1단계에 수록되어 있는 '카드 뭉치' 문제를 풀었습니다. 다른 사람의 풀이와 비교해보니 제가 조금 독특하게 풀었더라구요. 제 코드가 좀 지저분하긴 하지만 남들과 다른 아이디어로 푼 게 마음에 들어 sorted 문법 정리할 겸 풀이과정을 작성해보고자 합니다. 우선 제출한 답안은 다음과 같습니다. def solution(cards1, cards2, goal): cards1_s.. 2024. 4. 3.
알고리즘 | 음료수 얼리기 문제 (BFS와 DFS로 각각 풀어보기) 더보기 N by M 크기의 얼음 틀이 있습니다. 구멍이 뚫려 있는 부분은 0 칸막이가 존재하는 부분은 1입니다. 구멍이 뚫려있는 부분끼리 상, 하, 좌, 우로 붙어있는 경우 서로 연결되어 있는 것으로 판단합니다. 이러한 경우에서 얼음 틀의 모양이 그래프로 주어진다면 생성되는 아이스크림의 갯수는 몇 개일까요? graph_45 = [ [0,0,1,1,0], [0,0,0,1,1], [1,1,1,1,1], [0,0,0,0,0] ] n = 4 m = 5 첫째 / BFS 방식으로 풀기 출발점에서부터 점진적으로 진행해가는 방식으로 접근하는 경우 BFS를 고려해볼 수 있습니다. 일단 BFS니까 아묻따 디큐부터 임포트해주고 시작합니다. from collections import deque 1. 함수를 작성합니다. 입력받.. 2024. 4. 2.
알고리즘 | 프로그래머스 0단계_ 정수 나선형 배치 문제 풀기 (LRUD 활용) 탐색으로 풀어보려고 했으나 경우의 수를 모두 나누기가 어려웠습니다. 다른사람들의 풀이를 참고해 보니 direction 값을 right부터 시작하여 순차적으로 바꾸어나가는 이터레이션을 돌리면 간단하게 해결이 가능했습니다. 문제 설명 : 양의 정수 n이 매개변수로 주어집니다. n × n 배열에 1부터 n2 까지 정수를 인덱스 [0][0]부터 시계방향 나선형으로 배치한 이차원 배열을 return 하는 solution 함수를 작성해 주세요. 코드로 작성해 봅시다. # 예시 (n=3일 때) n = 3 graph = [[0] * n for _ in range(n)] graph # [[0, 0, 0], # [0, 0, 0], # [0, 0, 0]] 먼저 함수 초반에 그래프의 초기값은 다음과같이 세팅해줍니다. 확실히 .. 2024. 4. 1.