이 문제를 풀기 위해서는 비트마스크 DP에 대해서 알아야 한다.비트마스크는 여러 개의 참/거짓 상태를 하나의 정수로 압축하는 방법이다. 이 문제에서는 필요한 스킬의 개수가 최대 16개이므로, 각 스킬을 비트 하나에 대응시키면 어떤 팀이 가진 스킬 조합을 숫자 하나로 표현할 수 있다. 그리고 그 숫자를 DP의 상태로 쓰면, "이 스킬 조합을 만들 수 있는 가장 작은 팀"을 차근차근 갱신할 수 있다.0. 필요한 개념 먼저 정리하기먼저 비트마스크부터 보자. 예를 들어 필요한 스킬이 ["java", "nodejs", "reactjs"]라면 다음처럼 위치를 정할 수 있다.java -> 0번 비트nodejs -> 1번 비트reactjs -> 2번 비트그러면 ["nodejs", "reactjs"]를 가진 사람은 11..
전체 글
안녕하세요. 사진과 철학에 관심이 많은 웹 프론트엔드 개발자 오원종입니다. 시간이 지나도 꾸준히 읽힐 수 있는 글을 쓰고 싶습니다. 재미있는 일만 하면서 살고 있는 사람입니다.이 문제를 풀기 위해서는 이분 그래프 최대 매칭(Bipartite Matching), 그중에서도 Kuhn Algorithm에 대해서 알아야 한다.Kuhn Algorithm은 이분 그래프에서 매칭의 수를 하나씩 늘려 가는 알고리즘이다. 핵심은 단순히 "빈 자리를 찾는다"가 아니라, 이미 누군가 차지한 자리라도 기존 매칭을 다른 곳으로 옮길 수 있다면 전체 매칭 수를 늘릴 수 있다는 점이다.이 문제에서 남학생과 여학생은 자연스럽게 두 그룹으로 나뉜다.왼쪽 그룹: 남학생오른쪽 그룹: 여학생grid[i][j] === 1: i번 남학생이 j번 여학생을 초대할 수 있음따라서 문제는 "가능한 초대 관계들 중 서로 겹치지 않게 최대 몇 쌍을 만들 수 있는가?"로 바뀐다.1. 접근 : 문제를 단순화 하기문제에서는 m x..
26.06.29 ~ 26.07.03너무 열심히 살게 만드는 나라이번 한 주 몸이 안 좋다 보니 부정적인 생각들이 많이 생겼다. 열심히 사는 삶이 가지는 부작용에 대해 한 주간 생각해 보게 되었다. 어렸을 때부터 나는 뭐든지 열심히 하라는 말을 참 많이 들으며 자라 왔다. 그러다 보니 그게 맞다고 믿었고, 실제로 그런 나를 좋게 인정해 주는 사람도 주변에 많았던 것 같다. 하지만 요즘 나는 내가 열심히 살아온 삶이 너무 후회스럽다. 특히 나는 무언가에 몰두하면 시야가 좁아지기 쉬운 사람인데, 열심으로 인해 주변의 상황을 보지 못한 경우가 너무나도 많았기 때문이다. 가족이 무슨 생각을 하는지, 친구가 뭐에 관심이 있는지, 연인이 어떤 힘듦이 있는지 이러한 것들을 그동안 너무 보지 못하고 살아왔던 것 같다. ..
26.06.22 ~ 26.06.26대한민국 월드컵 경기를 보며이번 주 목요일에는 남아공과의 대한민국 월드컵 축구 경기가 있었다. 회사에서 업무 시간이어서 다 챙겨 보지는 못했지만, 중간중간 소식을 들을 때마다 아쉬움이 많이 느껴졌다. 가장 아쉬웠던 부분은, 0대 1로 지고 있는데 최소 비기기는 해야 하는 경기에서 우리나라 선수들이 적극적으로 공을 앞으로 가져가지 못하는 상황을 보았을 때였다. 아마 해설을 하던 위원들도 답답해하는 것 같았다. 결과는 이미 나왔고 사람들은 32강에 가기 위한 경우의 수를 계산하고 있는데, 나는 개인적으로 32강에 가지 않고 귀국해서 다시 팀을 꾸리는 게 어떨까 하는 생각이 든다.여러 문제점들이 많이 나왔지만, 선수들의 역량 부족과 자신감 부족이라는 측면이 가장 아쉬웠다. 공..
26.06.15 ~ 26.06.19허리 통증과 근육 뭉침, 꾸준한 스트레칭의 중요성나는 개발자로 일을 시작한 뒤로 꾸준하게 허리 통증과 근육 뭉침 증상으로 힘들었다. 내가 찾아보니 지금 내 증상이 퇴행성 디스크의 증상과 유사한 점이 많다는 것을 알게 되었다. 그래서 21년부터 거의 매년 빠지지 않고 도수 치료를 받았었다. 회당 10만 원~20만 원 정도 수십 회를 받으면 비용이 상당히 많이 든다. 하지만 그때뿐, 치료가 끝나면 다시 통증이 찾아왔다. 그리고 작년에는 트래일러닝을 하면서 허벅지에 쥐도 몇 번 나고, 근육이 뭉쳐 있는 증상이 운동을 하고 나서 풀어주지 않으면 위험해질 수 있다는 것도 알게 되었다.그래서 나는 폼롤러를 구입해서 폼롤러 스트레칭과 허리, 어깨, 목 부분을 중심으로 스트레칭을 시작..
26.06.08 ~ 26.06.12AI 에이전트를 어떻게 평가할 수 있을까요즘 개인적으로도, 팀에서도 AI 에이전트를 만들면서 하는 가장 큰 고민 중 하나는 "어떻게 평가할 수 있을지?"이다. 이와 관련해서 이번 주에 엔트로픽의 블로그 글을 하나 읽게 되었다. 제목은 Demystifying evals for AI agentsDemystifying evals for AI agentswww.anthropic.com이 글에서 말하는 핵심은 AI 에이전트 평가는 단순히 정답 채점이 아니라, 에이전트가 실제 환경에서 여러 턴 동안 도구를 쓰고 상태를 바꾸며 목표를 달성하는지를 측정하는 체계 라는 점이다. 일반적인 LLM 평가와 다르게, 에이전트 평가는 여러 턴 동안 도구를 호출하고, 환경을 바꾸고, 중간 결과에..
원문: https://hidde.blog/component-conformance/접근성을 고려해 UI 컴포넌트를 만들 수 있습니다. 개발하면서 컴포넌트와 함께 접근성 관련 사항을 문서화하거나, 명백한 장애물이 없는지 검토해도 됩니다. 모두 도움이 되고 권장할 만한 일입니다. 그렇다면 적합성을 주장하는 건 어떨까요? 이 글에서는 WCAG가 기술적으로 그것을 허용하지 않는 이유와, 그 판단이 옳다고 보는 이유를 이야기합니다.이 글의 일부는 제가 진행해 온 "내장 접근성: 축복인가 저주인가?"라는 발표 시리즈에서 비롯되었습니다. 이 발표에서는 "접근 가능한 웹 플랫폼 기능"과 저작 도구도 다룹니다. JS Heroes 2025 유튜브 영상을 확인하실 수 있습니다.평소와 같이, 이 글의 의견은 제 개인적인 견해이..
원문: https://www.viget.com/articles/fixing-typescript-performance-problems대규모 타입스크립트 모노레포(monorepo)에서 심각한 성능 문제를 디버깅한 경험을 소개합니다.최근 진행한 타입스크립트 프로젝트에서 에디터 성능이 점점 저하됐습니다. 타입스크립트 컴파일러(언어 서버 포함)가 코드베이스의 특정 영역에서 버벅이기 시작하면서 인텔리센스가 느려지고 타입 검사 시간이 길어졌습니다. 타입 정보가 오래된 상태로 남아 있는 일도 잦아졌고, 팀원들의 불만도 커졌습니다.이 프로젝트는 타입스크립트 패키지 7개로 구성된 모노레포입니다. 이전 개발자들이 프로젝트 참조(project references)(composite 설정 필수)와 증분 컴파일(increment..
