공부하고 기록하는, 경제학과 출신 개발자의 노트
반응형

프로그래밍 220

[Python] Hackerrank. Matrix Layer Location (Hard)

https://www.hackerrank.com/challenges/matrix-rotation-algo/problem?isFullScreen=false Matrix Layer Rotation | HackerRankRotate the matrix R times and print the resultant matrix.www.hackerrank.com 구현 난이도가 높진 않지만, 구현 시간이 오래걸리는 문제. 회전 대상이 되는 것들을 하나의 긴 배열이라고 생각해보자.예컨대 위 사진의 가운데 사각형을 회전시킨다는 건, [a22, a23, a24, a34, a33, a32] 배열의 순서를 바꾸는 작업이라고도 볼 수 있다.1회 회전: [a23, a24, a34, a33, a32, a22]2회 회전: [a24,..

[Python] Hackerrank. Almost Sorted (Medium)

https://www.hackerrank.com/challenges/almost-sorted/problem?isFullScreen=false Almost Sorted | HackerRankSort an array by either swapping or reversing a segmentwww.hackerrank.com 문제 속에 해답이 있는 유형. Almost Sorted 라는 조건과, 정렬의 기본 특징을 이해하면 접근할 수 있다. 두 개의 값만 Swap하면 정렬할 수 있다?정렬되었다는 건 arr[idx-1] swap 대상이 되는 첫 번째 값은 arr[idx-1] > arr[idx] 이고, swap 대상이 될 두 번째 값은 arr[idx+1] > arr[swap_l] 일 것이다.[1, 2,8,4,10..

[Python] Hackerrank. Hackerland Radio Transmitters (Medium)

https://www.hackerrank.com/challenges/hackerland-radio-transmitters/problem?isFullScreen=false Hackerland Radio Transmitters | HackerRankFind the minimum number of radio transmitters needed to cover all the houses in Hackerland!www.hackerrank.com Greedy 알고리즘 문제. 아래 로직을 반복하면 되는 구조.idx 위치에 transmitter를 설치했을 때, 오른쪽으로 얼마나 도달하는지 확인한다.도달할 수 있는 최대지점에 transmitter를 설치하면, 그 위치에서는 오른쪽으로 얼마나 도달하는지 확인한다.

[Python] Hackerrank. Flatland Space Station (Easy)

https://www.hackerrank.com/challenges/flatland-space-stations/problem?isFullScreen=false Flatland Space Stations | HackerRankFind the maximum distance an astronaut needs to travel to reach the nearest space station.www.hackerrank.com nearest space station까지의 거리의 최댓값을 구하는 문제. 인접한 두 station의 거리를 2로 나눈 값 중 최댓값을 찾으면 된다.Edge case는 두 개.첫 번째 도시와 첫 번째 station 사이의 거리마지막 도시와 마지막 station사이의 거리

[Python] Hackerrank. Lily's Homework (Medium)

https://www.hackerrank.com/challenges/lilys-homework/problem Lily's Homework | HackerRankHelp George figure out Lily's homeworkwww.hackerrank.com 문제의 핵심은 arr[i] - arr[i-1] 가 절댓값이라는 것.최솟값 기준 정렬 / 최댓값 기준 정렬했을 때 swap이 더 적은 걸 선택해야 한다. 처음에는 단순하게 이중 for문으로, idx별 최솟값 찾아서 swap하는 방식을 썼을 때 timeout이 발생. "idx별 최솟값 찾기" 를 O(1)으로 바꾸려면이미 정렬이 끝난 배열을 만들어둔다: sorted(arr)swap 과정을 기록할 O(1) 자료구조가 필요하다: dict정렬 문제인데 내장..

Kakao 메시지 API + MCP Server로 '나에게 메시지 보내기' 기능 만들기

개발 결과. 자세한 사용법은 아래 링크의 README를 참고하면 된다.https://github.com/inspirit941/kakao-bot-mcp-server GitHub - inspirit941/kakao-bot-mcp-server: MCP Server Implementation on Kakao Developers API to connect an AI AgentMCP Server Implementation on Kakao Developers API to connect an AI Agent - inspirit941/kakao-bot-mcp-servergithub.com 최근 라인에서 AI Agent가 라인 메시지 API를 호출할 수 있도록 해주는 MCP Server를 공개했다.https://git..

PaliGemma 모델로 Object Detection Fine Tuning한 방법 정리

https://aifactory.space/task/2733/overview 2024 Gemma 파인튜닝톤 (아이디어톤)🕹️ Gemma 파인튜닝 어디까지 해봤니?aifactory.space  AIFactory Gemma 파인튜닝 아이디어톤에 제출해서, 3등 우수상으로 입상한 내용PaliGemma로 Object Classification을 위한 데이터 준비 방법을 기록하기 위한 것.PaliGemma란?https://developers.googleblog.com/ko/gemma-explained-paligemma-architecture/ Gemma 설명: PaliGemma 아키텍처- Google Developers BlogGemma AI Announcements 전 세계 누구나 이해할 수 있도록 – Gem..

tinygo로 Wasm filter 만들어서 istio에 envoy plugin으로 붙이기

eventing-kafka-broker로 외부의 cloudevent를 받아서 Fanout하는 기능을 만들고 있었는데event source별로 순서 보장이 필요하지만cloudevent 보내는 쪽의 로직을 변경할 수 없는상황을 해결하기 위한 여러 작업 중 하나.  외부 cloudevent 이벤트를 받아서 kafka에 저장할 때, cloudevent spec에서 제공하는 paritionkey라는 옵션을 쓰면 된다.https://github.com/cloudevents/spec/blob/main/cloudevents/extensions/partitioning.md특정 kafka partition별로 매핑하기 위한 옵션으로, 같은 paritionkey를 가진 cloudevent는 동일한 kafka partitio..

Python SQLAlchemy의 many to many relation에 soft delete 기능 적용하기

FastAPI + SQLAlchemy로 API 서비스 만들면서 해결한 사안 정리하기. soft delete가 필요한 이유? 삭제 요청이 들어올 때마다 물리적으로 DB에서 row 정리해 버리면, 삭제된 데이터를 복원한다던가 / 삭제된 데이터의 이력이나 히스토리 파악하려면 데이터베이스 엔진 레벨에서 작업해야 한다. 민감정보 다루는 게 아니고, 서버로그처럼 많이 쌓여서 주기적으로 삭제해야 하는 entity 같은 성격이 아니라면 간단한 비즈니스 로직이나 api에서는 soft delete이 주는 편익이 비용보다 훨씬 크다고 생각함. GORM은 soft delete 기능 도입이 엄청 쉽고, soft delete 적용한 object끼리 relation을 조합하면 ORM에서 자동으로 쿼리를 생성해준다. https://..

반응형