전체 글 2596

[Programmers] RPG 게임 알고리즘

문제 링크입니다: https://school.programmers.co.kr/learn/courses/30/lessons/76504 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr BFS와 DP를 활용하여 푸는 알고리즘 문제였습니다.현재 있는 도시에 움직이지 않을 경우 z 원씩 쌓을 수 있으므로 z * n원을 얻은 뒤 도로 이동을 통해 잔여 금액인 (query - z * n) 원을 얻는 것이 핵심인 문제였습니다. 알고리즘은 다음과 같습니다.1. BFS를 통해 [0원, limit원]까지 각각을 만드는 최소 턴 수를 전부 구합니다.limit원 이하의 돈을 정확히 만드는 최소 턴 수만 미리 전부 구해둘 경우 ..

[Programmers] 블록 게임

문제 링크입니다: https://school.programmers.co.kr/learn/courses/30/lessons/42894 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr `3 * 2, 2 * 3 형태로 구성된 블록을 찾을 수 있으면 지운다`를 반복하는 알고리즘 문제였습니다. 알고리즘은 다음과 같습니다.1. 각 열마다 `가장 위쪽 블록의 행 번호`를 추적하여 topRowInCol 배열에 업데이트합니다.1.1 topRowInCol 배열은 실제 검사해야 할 행 범위를 빠르게 결정할 수 있도록 지원합니다. 2. 3 * 2 나 2 * 3 영역에서 다음 조건이 해당하면 블록을 제거해 줍니다.빈칸이 정확히..

[Chapter 3] 딥러닝, 그것이 알고 싶다

1. MLP, 행렬과 벡터로 표현하기MLP의 동작 방식은 `웨이트 곱하고 바이어스와 함께 더하고 액티베이션`의 연속개념적으로는 단순하지만 수식으로 표현할 경우 노드의 수와 층의 수에 따라 길고 복잡해질 수 있음하지만, 행렬과 벡터를 이용할 경우 간단하게 표현할 수 있음  주어진 신경망은 다음과 같은 구조를 가집니다:입력층: 2개 노드 (x₁, x₂)은닉층: 2개 노드 (h₁, h₂)출력층: 1개 노드 (y)가중치: w₁~w₆바이어스: b₁, b₂, b₃활성화 함수: a(·)손실 함수: E = ½(t - a(y))²  부연 설명수식의 경우 Hidden Layer가 늘어날수록 웨이트를 곱하고 바이어스를 더하고 액티베이션까지 표현하는 양이 많아지므로 매우 복잡한 것을 호가인할 수 있음반면, 행렬과 벡터를 이용..

[Chapter 2] 인공 신경망과 선형 회귀, 그리고 최적화 기법들

1. 인공 신경망 (Artificial Neural Network)인간 뇌의 신경망 구조에서 영감을 받아 만들어졌으며인공적으로 만든 신경들이 서로 연결되어 망을 이룬 형태 1.1 생물학적 신경 구조와 인공 신경의 유사성생물학적 신경 구조는 다음과 같이 크게 세 가지 부분으로 나눌 수 있습니다.수상돌기: 전기 신호를 받는 부분세포체: 받은 신호를 처리하는 부분축삭: 처리된 신호를 다음 신경으로 전달하는 부분 위와 같은 구조로 자극을 수용하고 해당 자극이 특정 임계값을 넘으면 다음 신경으로 신호를 전달하는 방식으로 작동합니다.  인공 신경은 위와 같은 생물학적 신경의 작동 원리를 모방합니다.인공 신경의 작동 과정을 간단히 설명하면 다음과 같습니다.여러 입력 노드로부터 자극을 받고받은 자극들의 총합을 계산계산..

[Programmers] 1,2,3 떨어트리기

문제 링크는 다음과 같습니다: https://school.programmers.co.kr/learn/courses/30/lessons/150364?language=cpp 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 트리 내 경로가 각 회차마다 유일하므로 `떨어지는 i 번째 숫자가 최종적으로 도달하는 리프 노드가 사실상 정해져 있다`는 아이디어로 구현하면 되는 알고리즘 문제였습니다. 알고리즘은 다음과 같습니다.1. 각 횟차마다 숫자가 어느 리프 노드에 도착하는지 시뮬레이션으로 모두 미리 구합니다.1.1 모든 리프 노드를 1로만 채우는 케이스가 최악의 경우이므로 시뮬레이션은 target 배열의 합만큼 돌..

ChatGPT o3-mini-high, Claude 3.5, DeepSeek R1 등 최대 20개월 무료로 사용하는 방법

서론Genspark 베타 버전을 사용할 경우 여러 유료 AI 모델들을 최대 20개월 무료로 사용할 수 있습니다.현재 Genspark 베타 버전에서 제공하는 모델들은 다음과 같습니다.  무료로 사용하는 방법현재 Genspark에서 프로모션을 진행하고 있으며 내용은 다음과 같습니다.2024년 12월 1일 이후 신규로 가입할 친구를 초대할 경우 초대한 사람과 초대받아 신규로 회원가입한 사람 모두 1개월치 Genspark Plus 구독권을 획득합니다.초대받은 친구는 초대 링크를 클릭하고, Genspark에 등록 및 로그인한 후, 전화번호를 연결하여 두 사람의 무료 멤버십을 활성화해야 합니다.제 초대 링크로 가입해주신 뒤 본인의 초대 링크를 지인들에게 공유해 최대 20개월 공짜로 이용하시면 좋을 것 같습니다! 제..

[DEV] 기록 2025.01.24

[Chapter 1] 개념 정리

1. AI vs ML vs DL  1.1 AI (Artificial Intelligence)인간의 지능을 인공적으로 구현한 기술 전체를 아우르는 광범위한 개념머신러닝과 딥러닝은 AI의 세부 분야로, AI를 실현하는 구체적인 방법론에 해당ex) Rule-Based Algorithm 1.2 ML (Machine Learning)머신러닝의 핵심은 데이터 기반으로 학습한다는 점데이터 기반 방식은 규칙을 하나하나 만들 필요 없이, 수많은 데이터를 제공하여 AI가 스스로 규칙을 찾도록 유도복잡한 규칙을 일일이 정의할 필요 없이, 대량의 데이터를 통해 AI가 스스로 패턴을 학습하고 분류 능력을 기를 수 있음반면, 규칙 기반 알고리즘은 직접 규칙을 정의해야 함 데이터로 학습하는 과정이 머신러닝의 `훈련 과정`이며, 이..

백준 7469번 K번째 수

문제 링크입니다: https://www.acmicpc.net/problem/7469 좌표 압축과 퍼시스턴트 세그먼트 트리를 이용하는 문제였습니다.퍼시스턴트 세그먼트 트리 관련해서는 justicehui님 블로그를 참고하시면 될 것 같습니다.https://justicehui.github.io/medium-algorithm/2020/02/29/PST/ Persistent Segment Tree서론 어떤 자료구조가 “persistent하다”라는 것은, 상태의 변화가 생기더라도 과거 상태를 모두 보존하고 있다는 것을 의미합니다. Persistent Segment Tree(PST)는 세그먼트 트리의 갱신 과정을 모두 저justicehui.github.io 알고리즘은 다음과 같습니다.1. 배열 a의 값들이 [-10^..

알고리즘/BOJ 2025.01.18

[Kotlin 코루틴] 코루틴 심화

공유 상태를 사용하는 코루틴의 문제와 데이터 동기화 1. 가변 변수를 사용할 때의 문제점쓰레드 간에 데이터를 전달하거나 공유된 자원을 사용하는 경우에는 가변 변수를 사용해 상태를 공유하고 업데이트해야 함하지만 여러 쓰레드에서 가변 변수에 동시에 접근해 값을 변경하면 데이터의 손실 혹은 불일치로 인해 심각한 버그가 발생 가능코루틴은 주로 멀티 쓰레드 환경에서 실행되기 때문에 코루틴을 사용할 때도 동일한 문제가 발생 가능   위 코드에서 결과가 예상한대로 나오지 않는 이유 1.1 메모리 가시성 문제해당 문제는 쓰레드가 변수를 읽는 메모리 공간에 관한 문제로 CPU 캐시와 메인 메모리 등으로 이루어진 하드웨어의 메모리 구조와 연관되어 있음쓰레드가 변수를 변경시킬 때 메인 메모리가 아닌 CPU 캐시를 사용할 경..

[Kotlin 코루틴] 코루틴의 이해

서브루틴과 코루틴 1. 루틴과 서브루틴프로그래밍 과점에서 루틴은 `특정한 일을 처리하기 위한 일련의 명령`이라는 뜻으로 사용이런 일련의 명령을 함수 또는 메서드라고 지칭 서브루틴은 함수 내에서 함수가 호출될 경우 호출된 함수간단하게 설명하면 서브루틴이란 함수의 하위(sub)에서 실행되는 함수를 지칭서브루틴은 한 번 호출되면 끝까지 실행됨따라서 루틴에 의해 서브루틴이 호출되면 루틴을 실행하던 쓰레드는 서브루틴을 실행하는 데 사용되어 서브루틴의 실행이 완료될 때까지 루틴은 다른 작업을 할 수 없음 (blocking) 2. 서브루틴과 코루틴의 차이서브루틴과 달리 코루틴은 함께(co) 실행되는 루틴으로 서로 간에 쓰레드 사용을 양보하며 함께 실행됨  부연 설명부모 코루틴은 while 문을 통해 `부모 코루틴에서..