algorithms

4 개의 포스트

kakao5분 읽기큐레이션 요약

2026 카카오그룹 신입크루 공채 코딩테스트 1차 문제해설

2026 카카오그룹 신입크루 1차 코딩테스트는 문자열 처리, 시뮬레이션, 트리 최적화, 그래프 탐색 등 다양한 난도의 7문제로 구성되었으며, 글에서는 그중 일부 문제의 해결 전략을 설명합니다. 핵심은 문제별 제약을 활용해 중복 제거, 주기 탐색, 구조적 정렬, 상태 완전탐색, BFS 시뮬레이션으로 풀이 범위를 줄이는 것입니다. 특히 3번 문제는 최적해의 트리 구조를 증명해 탐색 공간을 크게 축소합니다. ## 문제 1: 스포 방지 구간의 중요한 단어 판별 - 문자열을 공백 기준으로 나누고 각 단어의 시작·끝 인덱스를 구합니다. - 단어 구간과 스포 방지 구간 `[s, e]`가 한 글자라도 겹치면 스포 방지 단어로 분류합니다. - 비스포 구간에 등장한 단어는 `Set`이나 `HashMap`에 저장해 중복 여부를 관리합니다. - 스포 방지 단어 중 다음 조건을 모두 만족하는 단어만 중요한 단어로 셉니다. - 스포 방지 구간과 겹친다. - 비스포 구간에는 등장하지 않았다. - 같은 시점에 왼쪽에서 먼저 공개된 중요한 단어와 중복되지 않는다. - 여러 단어가 동시에 공개될 때는 왼쪽 단어부터 처리하므로, 처리한 중요한 단어도 별도로 저장해야 합니다. ## 문제 2: 모든 신호등이 노란불이 되는 시점 찾기 - 각 신호등은 `G + R + Y` 길이의 주기를 무한히 반복합니다. - 모든 신호등이 동시에 노란불인 첫 시점을 찾기 위해 시뮬레이션합니다. - 정답이 존재하지 않을 수도 있으므로 종료 시점을 정해야 합니다. - 모든 주기 길이의 최소공배수까지 확인하면 이후 상태가 반복됩니다. - 각 `G + R + Y`가 최대 20이므로 충분히 큰 상한까지 직접 시뮬레이션하는 방법도 가능합니다. - 구현 방법은 여러 가지입니다. - 매초 각 신호등의 현재 상태를 갱신합니다. - 시간 배열을 만들고 각 시점의 노란불 개수를 셉니다. - 각 신호등의 노란불 구간을 수식으로 계산해 특정 시점에 노란불인지 판정합니다. - 모든 신호등의 노란불 개수가 신호등 수와 같아지는 첫 시점을 답으로 선택합니다. ## 문제 3: 트리의 리프 노드 수 최대화 - 분배수는 2 또는 3이며, 같은 깊이의 분배 노드는 모두 같은 분배수를 사용합니다. - 분배수 `k`인 노드 하나는 예산을 1 사용하고 리프 수를 `k - 1`만큼 증가시킵니다. - 루트에서 리프까지의 분배도는 경로상의 분배수 곱이며, 항상 `2^p × 3^q` 형태입니다. - 각 경로의 곱이 `split_limit`을 넘지 않아야 합니다. ### 부분 분배의 정렬 - 같은 분배수를 사용하는 연속된 층에서 부분 분배가 여러 번 발생한다면, 얕은 층부터 최대한 완전 분배하도록 순서를 바꿀 수 있습니다. - 순서를 바꿔도 다음 값은 변하지 않습니다. - 전체 예산 사용량 - 전체 리프 수 증가량 - 각 경로에서 분배수 곱의 총량 - 따라서 하나의 분배수 블록에서는 부분 분배가 최대 한 깊이에서만 발생하도록 정렬할 수 있습니다. ### 2분배층을 3분배층보다 위에 배치 - 프런티어 크기가 `W`일 때: - `2 → 3` 순서의 예산은 `W + 2W = 3W` - `3 → 2` 순서의 예산은 `W + 3W = 4W` - 두 순서 모두 최종 프런티어 크기는 `6W`지만, `2 → 3`이 더 적은 예산을 사용합니다. - 따라서 최적해는 일반적으로 다음 형태로 정렬할 수 있습니다. ```text 2분배층 여러 개 → 3분배층 여러 개 ``` ### 풀이 절차 - 가능한 모든 `(i, j)`에 대해 `2^i × 3^j ≤ split_limit`인지 확인합니다. - 각 조합마다 `2`를 사용하는 층을 먼저, `3`을 사용하는 층을 나중에 배치합니다. - 각 층에서 프런티어 전체를 분배할 수 있으면 예산을 사용해 다음 층으로 이동합니다. - 예산이 부족해지면 남은 예산만큼 부분 분배하고 해당 경우를 종료합니다. - 모든 조합 중 최종 리프 수가 가장 큰 값을 답으로 선택합니다. ## 문제 4: 바이러스 파이프 감염 최대화 - 트리의 간선은 A, B, C 세 종류의 파이프로 구성됩니다. - 한 번에는 한 종류의 파이프만 열 수 있으며, 현재 감염된 배양체에서 해당 종류의 파이프만 따라가며 연결된 모든 배양체가 감염됩니다. - 이미 감염된 배양체는 계속 감염 상태로 유지됩니다. - 같은 종류의 파이프를 연속해서 여는 것은 상태 변화가 없으므로 고려할 필요가 없습니다. - 파이프를 열 때마다 현재 감염 집합을 시작점으로 DFS 또는 BFS를 수행합니다. - 가능한 파이프 열림 순서를 모두 시뮬레이션합니다. - 최대 길이가 10이므로 순서의 수는 `3^10 = 59,049`로 충분히 작습니다. - 각 순서에서 최종 감염 배양체 수를 계산하고 최댓값을 구합니다. ## 문제 5: 카카오 앱 밀기 시뮬레이션 - 격자 안의 정사각형 앱을 한 칸 밀면, 앞을 막는 앱들도 같은 방향으로 연쇄 이동합니다. - 앱이 격자 밖으로 나가면 반대편으로 넘어오며, 이 과정에서 추가 충돌이 발생할 수 있습니다. - 앱 블록이 2×2, 3×3처럼 크기 때문에 연쇄 이동이 여러 행과 열로 퍼질 수 있습니다. ### BFS 기반 연쇄 처리 - 명령을 처리할 때 처음 선택한 앱을 시드로 둡니다. - BFS로 해당 앱이 이동할 때 함께 밀려야 하는 앱을 탐색합니다. - 탐색이 끝나면 관련 앱을 동시에 한 칸 이동시킵니다. - 격자 밖으로 잘린 앱이 생기면 이를 다음 라운드의 새로운 시드로 사용합니다. - 새로운 시드가 더 이상 없을 때까지 다음 과정을 반복합니다. 1. 시드 설정 2. BFS로 충돌 앱 탐색 3. 앱 동시 이동 4. 잘린 앱을 다음 시드로 등록 - 격자 크기와 블록 수의 제한이 작아 직접 상태를 시뮬레이션할 수 있으며, 유한한 상태 공간 때문에 연쇄 과정의 종료도 보장됩니다. 문제별로 자료구조와 알고리즘을 복잡하게 적용하기보다, 문자열 중복 관리에는 집합, 반복 주기에는 최소공배수, 트리에는 교환 논증과 완전탐색, 감염·충돌에는 BFS를 적용하는 것이 핵심입니다. 특히 최적화 문제에서는 가능한 구조를 먼저 증명해 탐색 범위를 줄이는 접근이 효과적입니다.

원문 읽기(새 탭에서 열림)
figma3분 읽기큐레이션 요약

제14호: 소프트웨어는

소프트웨어는 기능을 제공하는 도구를 넘어 사람들이 생각하고 말하고 관계 맺고 문화를 형성하는 방식에 영향을 준다. AI가 소프트웨어 제작의 동료로 발전하면서, 소프트웨어는 인간의 필요와 문화적 맥락에 더욱 밀착될 전망이다. 이 글은 디자인, 언어, 게임, 음식, 제조 사례를 통해 소프트웨어와 문화가 서로를 어떻게 변화시키는지 보여준다. ## 소프트웨어와 문화의 결합 - 배달 주문, 인간관계 형성, 의미 추구 등 소프트웨어는 일상생활의 거의 모든 영역에 관여한다. - AI는 단순한 도구를 넘어 소프트웨어 제작 과정의 협업자 또는 동료로 자리 잡고 있다. - 기술을 만드는 사람뿐 아니라 사회 전체가 소프트웨어의 문화적 영향력을 이해해야 한다는 문제의식을 제시한다. ## 디자인은 문화다 - 핀치 투 줌, 무한 스크롤, 좋아요 탭과 같은 상호작용은 오늘날 자연스럽지만, 처음에는 낯선 새로운 동작이었다. - 이러한 인터랙션은 단순한 사용성 개선을 넘어 한 세대의 사고방식과 감정, 디지털 습관을 형성했다. - 과거의 대표적인 인터페이스 10가지를 돌아보며, 앞으로 등장할 디자인 역시 문화적 행동 양식을 바꿀 수 있음을 강조한다. ## 언어는 문화다 - “6-7”, “aura”, “rizz” 같은 표현은 소셜 미디어를 통해 빠르게 확산된 신조어의 사례다. - 알고리즘은 어떤 표현이 더 많이 노출되고 유행하는지를 결정하면서 사람들이 사용하는 언어에도 영향을 미친다. - 언어는 단순히 소통 수단에 그치지 않고, 사람들이 세상을 이해하고 서로 관계 맺는 방식까지 바꾼다. - 언어학자 애덤 알렉식은 이러한 현상을 ‘알고스피크(algospeak)’와 연결해 설명한다. ## 게임은 문화다 - 비디오게임은 단순한 오락을 넘어 1,840억 달러 규모의 복잡한 산업으로 성장했다. - 다양한 게임 모드, 캐릭터, 사이드 퀘스트를 제공하면서도 플레이어는 여전히 몇 개의 버튼으로 구성된 컨트롤러를 사용한다. - 제한된 입력 장치가 복잡한 가상 세계를 탐색하게 만드는 방식은 인터페이스 설계의 중요한 원리를 보여준다. - 에픽게임즈 디자이너 아슈레이 샤르마는 게임 컨트롤러의 발전이 차세대 소프트웨어 인터페이스에 줄 수 있는 시사점을 설명한다. ## 음식과 소프트웨어의 결합 - 캐나다 브리티시컬럼비아에서는 매주 한 명꼴로 농부가 사업을 접할 정도로 소규모 농가가 어려움을 겪고 있다. - 창업자 애런 베일은 지역 농부와 식당을 연결하는 마켓플레이스 앱을 구상했다. - 전통적인 방식이라면 MVP 제작을 위해 개발팀을 구성해야 했지만, Figma Make를 활용해 프롬프트 중심으로 앱을 만들었다. - 그 결과 3주 이내에 실제 작동하는 서비스 형태를 구현하며, AI 기반 제작 도구가 사회적 문제 해결의 진입장벽을 낮출 수 있음을 보여준다. ## 제조와 디지털 디자인의 연결 - 디자이너 켈시 페어허스트는 손으로 직접 만드는 작업에 매력을 느낀 뒤 금속 가공 기술을 연구했다. - 브루클린의 스튜디오와 클리블랜드의 제작 공장을 오가며 ‘소프트라인 브루탈리스트’ 스타일의 스테인리스 식기를 개발했다. - 프로젝트 ‘Forks Plus’는 디지털 디자인 도구와 물리적 제작 과정이 결합된 사례다. - 소프트웨어는 화면 속 결과물만 만드는 도구가 아니라, 실제 제품과 제작 문화를 실현하는 기반이 될 수 있다. 소프트웨어를 설계할 때는 기능과 효율성만이 아니라 사용자의 언어, 습관, 감정, 사회적 맥락까지 고려해야 한다. 특히 AI 제작 도구가 확산될수록 누구나 문화와 사회에 영향을 주는 제품을 만들 수 있으므로, 빠른 구현만큼 그 영향과 책임을 함께 검토하는 것이 중요하다.

원문 읽기(새 탭에서 열림)
figma3분 읽기큐레이션 요약

“Chat, 우리 망했

소셜 미디어 알고리즘은 유행어를 퍼뜨리는 데 그치지 않고, 사람들이 자신을 표현하고 타인을 이해하는 방식까지 바꾼다. 알고리즘은 특정 커뮤니티의 언어를 맥락에서 분리해 대중화하며, 단어의 의미와 문화적 배경을 재구성한다. 따라서 새로운 표현 자체를 문제 삼기보다, 어떤 플랫폼 구조와 문화적 경로가 그 언어를 유행시켰는지 비판적으로 살펴봐야 한다. ## 인터페이스가 사고와 관계를 바꾸는 방식 - Tinder의 ‘스와이프’는 단순한 조작법을 넘어 호감과 선택을 표현하는 언어가 됐다. - 오른쪽을 긍정적으로, 왼쪽을 부정적으로 인식하는 서구 문화의 상징 체계도 인터페이스에 반영된다. - Marshall McLuhan의 “미디어가 메시지다”라는 개념처럼, 플랫폼의 형식과 기능 자체가 사용자의 행동과 의미 해석을 만든다. - Hinge의 프로필 질문은 사용자를 특정한 서사 방식으로 자기소개하게 한다. - Grindr의 ‘bear’, ‘twink’ 같은 분류 체계는 사용자가 자신의 정체성을 특정 부족이나 유형으로 표현하도록 유도한다. - 즉, 플랫폼은 사용자의 외적 표현뿐 아니라 자기 자신을 이해하는 방식에도 영향을 준다. ## 알고리즘과 ‘맥락 붕괴’ - 인터넷은 특정 커뮤니티에서 만들어진 언어를 더 넓은 대중에게 빠르게 확산시킨다. - 알고리즘은 해시태그뿐 아니라 게시물과 영상에서 사용된 단어 자체를 메타데이터처럼 활용한다. - 특정 집단에서만 통용되던 표현이 ‘For You’ 피드에 등장하면, 이용자는 그 말이 자신의 문화권을 위한 것이라고 오해할 수 있다. - 원래의 역사·공동체·정치적 맥락이 사라진 채 표현만 확산되는 현상을 ‘맥락 붕괴’라고 볼 수 있다. - 예를 들어 ‘slay’는 뉴욕의 흑인·라틴계 게이 남성들이 중심이었던 볼룸 문화에서 출발했지만, 소셜 미디어를 거치며 훨씬 넓은 대중어가 됐다. ## 커뮤니티 언어의 대중화와 의미 변화 - ‘slay’, ‘serve’, ‘queen’, ‘cooked’, ‘ate’, ‘bussin’’, ‘it’s giving’ 등은 볼룸 문화와 AAVE에서 유래한 표현의 사례로 제시된다. - 인터뷰이는 유행어의 상당수가 AAVE 또는 4chan에서 비롯된다는 경험적 견해를 말한다. - 대중화 과정에서 단어는 더 많은 사람에게 사용되지만, 원래의 문화적 의미와 정서적 뉘앙스는 약해질 수 있다. - 인플루언서가 유행어를 사용하고, 알고리즘이 이를 확산시키면서 단어의 인지도와 바이럴성이 서로 강화된다. - 언어 변화는 자연스러운 현상이지만, 어떤 공동체의 표현이 누구에 의해 소비되고 재해석되는지는 살펴볼 필요가 있다. ## 밈을 통한 이념과 문화의 확산 - 밈은 단순한 농담이나 유행어가 아니라 특정 생각과 가치관을 전달하는 매개체가 될 수 있다. - ‘looksmaxxing’이나 ‘-pilled’처럼 인셀 문화에서 사용되던 표현도 밈의 형태로 주류에 진입할 수 있다. - 밈은 거부감이 큰 사상이나 온라인 하위문화의 관점을 재미있는 표현 속에 숨겨 전달하는 ‘트로이 목마’처럼 작동할 수 있다. - 다만 새로운 단어를 사용하는 것 자체가 곧 해롭다는 뜻은 아니며, 그 표현이 어디서 왔고 어떤 관점을 포함하는지 인식하는 태도가 중요하다. ## 언어가 바이럴리티의 지표가 되는 과정 - 오늘날 언어는 콘텐츠의 설명 수단을 넘어 알고리즘이 포착하는 핵심 신호가 된다. - 특정 단어를 사용하면 콘텐츠가 유행 흐름에 편입될 가능성이 높아지고, 다시 더 많은 사람이 그 단어를 접하게 된다. - 플랫폼은 이런 순환을 통해 어떤 표현을 ‘바이럴한 언어’로 만들고, 사용자는 유행에 참여하기 위해 그 표현을 모방한다. - 결과적으로 알고리즘은 사람들이 무엇을 말하는지뿐 아니라, 어떤 단어를 가치 있고 영향력 있다고 느끼는지도 결정한다. 플랫폼에서 유행어를 사용할 때는 뜻만 따라 하기보다 그 표현의 기원, 원래 사용하던 공동체, 현재의 의미 변화를 함께 확인하는 것이 좋다. 서비스를 설계하거나 운영한다면 특정 언어가 어떤 맥락에서 확산되는지와 인터페이스가 정체성 표현에 미치는 영향까지 고려해야 한다.

원문 읽기(새 탭에서 열림)
google원문

차분 프라이버시 파티 (새 탭에서 열림)

구글 리서치는 대규모 데이터셋에서 개인정보를 보호하면서도 유용한 데이터를 추출할 수 있는 혁신적인 차분 프라이버시(Differential Privacy, DP) 파티션 선택 알고리즘인 'MAD(MaxAdaptiveDegree)'를 공개했습니다. 이 알고리즘은 수천억 개의 아이템이 포함된 방대한 데이터를 처리할 수 있는 병렬 구조를 갖추고 있으며, 기존 비적응형 방식보다 훨씬 더 많은 유효 데이터를 안전하게 식별해 냅니다. 이를 통해 연구자들은 개별 사용자의 민감한 정보를 노출하지 않으면서도 AI 모델 학습이나 데이터 분석에 필요한 고품질의 데이터셋을 확보할 수 있게 되었습니다. **차분 프라이버시(DP) 파티션 선택의 역할** * **개념 정의:** 수많은 사용자가 기여한 방대한 데이터 집합에서 특정 임계치 이상의 빈도를 가진 공통 아이템(예: 자주 사용되는 단어나 n-gram)을 안전하게 선택하는 프로세스입니다. * **프라이버시 보호:** 특정 개별 사용자의 데이터 포함 여부를 알 수 없도록 제어된 노이즈를 추가하며, 노이즈가 섞인 상태에서도 충분히 공통적인 아이템만 최종 리스트에 포함합니다. * **활용 분야:** 대규모 텍스트 코퍼스의 어휘 추출, 데이터 스트림 분석, 사용자 데이터 기반 히스토그램 생성, 프라이버시 보존형 모델 미세 조정(Fine-tuning)의 효율성 증대 등에 필수적입니다. **기존 가중치 산정 방식의 한계** * **표준 패러다임:** 일반적으로 '가중치 계산(빈도 측정) → 노이즈 추가(가우시안 노이즈 등) → 필터링(임계값 적용)'의 3단계를 거칩니다. * **가중치 낭비:** 기존의 비적응형 방식은 매우 인기 있는 아이템에 필요 이상의 가중치를 할당하는 경향이 있으며, 이로 인해 임계값 바로 아래에 있는 유용한 아이템들이 노이즈에 의해 삭제되는 문제가 발생합니다. * **확장성 문제:** 기존의 순차적(Sequential) 알고리즘은 현대의 거대 데이터셋을 처리하기에 속도가 너무 느려 실무 적용에 한계가 있었습니다. **적응형 가중치 재배분을 통한 MAD 알고리즘의 혁신** * **적응형 가중치(Adaptive Weighting):** MAD 알고리즘은 아이템 간의 가중치를 독립적으로 두지 않고, 다른 사용자의 기여도를 고려하여 전략적으로 가중치를 재할당합니다. * **효율적 재배분:** 임계값을 훨씬 상회하는 인기 아이템의 '과잉 가중치'를 식별하고, 이를 임계값 근처에 있는 아이템들에 재배분하여 더 많은 유효 아이템이 프라이버시 기준을 통과하도록 돕습니다. * **병렬 대규모 처리:** 수천억 개의 아이템을 동시에 처리할 수 있는 병렬 구조로 설계되어, 기존 순차 알고리즘 대비 최대 1,000배 더 큰 규모의 데이터셋까지 확장 가능합니다. * **성능 유지:** 가중치를 재배분하면서도 차분 프라이버시의 핵심인 '낮은 민감도(Low-sensitivity)'와 계산 효율성을 그대로 유지합니다. **실용적 의의 및 권고** 데이터 규모가 커질수록 프라이버시 보호와 데이터 유용성 사이의 균형을 맞추는 것이 어려워지지만, MAD 알고리즘은 병렬 처리를 통해 이 문제를 해결했습니다. 대규모 사용자 데이터를 다루는 연구자나 엔지니어는 구글이 오픈소스로 공개한 'DP 파티션 선택' 라이브러리를 활용하여, 데이터의 유실을 최소화하면서도 강력한 프라이버시 보증을 제공하는 데이터 파이프라인을 구축할 것을 권장합니다.