문제 링크 https://school.programmers.co.kr/learn/courses/30/lessons/17683? 2018 카카오 블라인드 3차 코딩 테스트에서 나왔던 문제단순 구현 문제라고 생각되는데, 생각보다 구현해야 하는 함수 부분이 많아서 잘 정리하는 게 중요했다. 또한 예외 케이스가 많은 문제여서 테스트 케이스를 잘 짜는 것이 중요했다. 문제 핵심 및 풀이 멜로디와 일치하는 곡 찾기의 문제 멜로디(m)가 곡(musicInfo) 안에 있는지 확인하는 과정은, 일반적으로는 문자열 비교로 하면 된다. 하지만 입출력 예시 3번에서 볼 수 있듯이 #이 문제가 된다. 일반적인 문자열 비교로 찾을 때는, m = "ABC" , musicInfo = "ABC#" 일 때, 조건 일치로 판단한다. 그래..
문제 링크 https://school.programmers.co.kr/learn/courses/30/lessons/150369? 2023년 카카오 블라인드에서 나온 따끈따끈한 최신 문제 이 문제를 실제 테스트로 봤으면 어땠을까? 문제 로직은 크게 어렵다고 생각 들진 않았지만 이상하게 푸는데 오래 걸렸다. 문제 핵심 및 풀이 제한사항 부분을 보면 집(n)의 개수가 최대 100,000개이고, cap은 50까지밖에 되지 않는다. deliveries와 pickups의 개수 또한 n과 같다. 해당 문제에서는 cap이 50밖에 되지 않는 것은 오히려 반복 횟수를 늘린다. 왜냐하면 50번밖에 담지 못하기 때문에 여러 번 왔다갔다 해야한다.. 그래서 완전탐색으로 해당 문제를 풀기에는 비효율적으로 보이고, 실제로 완전 ..
문제 링크 https://school.programmers.co.kr/learn/courses/30/lessons/77486 2021 Dev-Maching에서 나온 문제 카카오 기출문제만 풀다와서 그런진 모르겠는데, Level 3 치곤 쉽게 풀었다. 만약 카카오 코딩 테스트에서 나왔다면, Level 2 쯤 아니었을까? 문제 핵심 및 풀이 그림에서 보면 알 수 있듯이, 트리 구조가 형성되는 것을 알 수 있다. 그리고 해당 문제에서는 자신을 추천한 사람을 아는 것이 중요한데, parent [i] = k : i를 추천한 사람이 k이다. 이런 식으로 정의하도록 한다. 사람 이름 문자열을 매핑 여기서 생각해야 할 것은 트리의 각 노드들이 사람이름(문자열)이라는 점이다. 그래서 parent의 인덱스로 문자열을 사용..
스트리밍 저장 비디오 - 넷플릭스 넷플릭스 비디오 배포에는 2가지 주요 구성요소 아마존 클라우드 자체 CDN 인프라가 있음 아마존 클라우드 웹사이트는 아마존 클라우드에서 모든 것이 실행된다. 넷플릭스에서의 웹사이트 사용자 등록 및 로그인, 결제, 영화 장르 검색, 영화 추천 서비스 등 다양한 기능 처리 아마존 클라우드의 주요한 기능 콘텐츠 수집(contetent ingestion) 넷플릭스는 고객들에게 비디오 분배 전, 먼저 영화를 수집하고 처리해야 한다. 영화의 스튜디오 마스터 버전을 받아서 클라우드 시스템의 호스트에 업로드함 콘텐츠 처리(content processing) 아마존 클라우드 시스템의 기기에서는 각 영화의 여러 가지 형식의 비디오를 생성 ← 고객들의 다양한 플레이어 기기 사양에 적합하기 ..
거대 데이터 센터 구축 및 직접 전송 인터넷 비디오 회사에서 스트리밍 서비스를 제공하는 가장 단순한 방법 인터넷 비디오 회사들은 엄청난 스트리밍 트래픽을 전 세계에 걸친 지점에 끊김 없이 안정적으로 제공하는 일을 한다. 이러한 일들은 매우 어려운 문제임 과정 단일한 거대 데이터 센터를 구축하여 모든 자료를 센터에 저장 전 세계의 사용자에게 비디오 스트림을 데이터 센터로부터 직접 전송 문제점 클라이언트가 데이터 센터로부터 멀리 있는 경우 서버로부터 클라이언트로의 패킷 경로는 많은 통신 링크와 ISP를 거쳐감 거쳐가는 많은 통신 링크 중 하나라도 비디오 소비율보다 낮은 전송용량인 경우 → 종단 간에 처리율이 낮아지고, 결국 사용자는 화면 정지 현상을 겪음 종단 간의 길이가 길어질수록 이런 현상은 증가 인기 ..
인터넷 비디오 스트리밍 비디오 애플리케이션 → 미리 녹화된 비디오를 대상으로 한다. 녹화된 비디오는 서버에 저장되어 사용자가 서버에게 온디맨드 요청을 통해 시청 예 : 넷플릭스, 유튜브, 아마존, 틱톡 등 많은 인터넷 회사가 비디오 스트리밍 지원 비디오 매체의 특징 비디오는 일반적으로 초당 24개 혹은 30개의 이미지로 일정한 속도로 표시 비디오는 이미지의 연속이다. 압축되지 않은 디지털 인코딩된 이미지는 픽셀 단위로 구성 각 픽셀은 휘도와 색상을 나타내는 여러 비트들로 인코딩 됨 비디오의 중요 특징 - 압축 가능 비디오 품질과 비트 전송률은 서로 반비례하다. 현대 상용 압축 알고리즘은 원하는 모든 비트 전송률로 비디오 압축 가능 비트 전송률이 높을수록 이미지 품질이 좋아지고 사용자 시청 환경이 향상 압..
교착 상태 탐지(Deadlock Detection) 시스템이 교착 상태 예방 혹은 방지 알고리즘을 사용하지 않는 경우 다음 2가지 알고리즘들을 반드시 지원해야 한다. 교착 상태가 발생했는지 결정하기 위해 시스템의 상태를 검사하는 알고리즘 교착 상태로부터 회복하는 알고리즘 탐지와 회복 방법은 필요한 정보를 유지하고 탐지 알고리즘을 실행 시간 비용이 든다. 또한, 교착 상태로부터 회복할 때 내재하는 가능한 손실을 포함하는 오버헤드가 필요 각 지원 유형이 한 개씩 있는 시스템 대기 그래프(wait-for graph) 해당 경우, 대기 그래프를 사용해서 교착 상태 알고리즘을 정의 대기 그래프(wait-for graph) : 자원 할당 그래프의 변형 대기 그래프를 얻는 방법 자원 할당 그래프로부터 자원 유형의 노..
P2P 파일 분배 P2P 구조는 항상 켜져 있는 인프라스트럭처 서버에 최소한으로 의존한다. 인프라스트럭처 서버에 전혀 의존 안 할 수도 있음 cf ) 클라이언트-서버 구조 → 인프라스트럭처 서버에 많이 의존함 P2P는 간헐적으로 연결되는 피어(호스트 쌍)들이 서로 직접 통신 피어는 사용자가 제어하는 데스크톱과 랩톱, 스마트폰이 보유한다. 서비스 제공자가 소유하는 것이 아님 자연적인 P2P 애플리케이션 커다란 파일을 한 서버에서 다수의 호스트(피어)로 분배한다. 파일이 될 수 있는 것 리눅스 운영체제의 새로운 버전 기존 운영체제 혹은 애플리케이션을 위한 소프트웨어 패치(patch) MP3 음악파일 혹은 MPEG 비디오 파일 클라이언트-서버 파일 분배에서 서버는 파일 복사본을 각 피어들에게 보내야 함 → 이..