Mgcllee

[프로그래머스] 마법의 엘리버이터

이 포스트는 프로그래머스 사이트의 마법의 엘리베이터 문제 풀이입니다. 문제 해결 과정 이 문제를 처음 읽었을 때, 현재 위치(‘storey’층)에서 목표 위치(‘0’층)로 이동하는 경로 중 최단 경로를 구하는 문제라고 이해했습니다. 그리고 예제에서 알 수 있듯이, 0층으로 이동하는 최단 경로는 반드시 아랫쪽만 이동해서 구할 수 있는 것이...

[프로그래머스] 연속된 부분 수열의 합

이 포스트는 프로그래머스 사이트의 연속된 부분 수열의 합 문제 풀이입니다. 문제 해결 과정 이 문제를 처음 접한다면 sequence 범위에서 순환하는 2중 반복문을 시도해 볼 수 있습니다. 그러나 문제에서 sequence의 길이로 1’000’000이 될 수 있다고 하였습니다. 만약, 1’000’000이 주어진다면 2중 반복문에서는, 1’...

[C++] sstream으로 문자열 조작하기

문자열 조작이 필요한 이유 여러 종류의 알고리즘 문제에서 자주 사용되는 것이 “문자열 조작”입니다. 한 문자열 안에 여러 정보가 함께 주어지거나 변수와 함께 특정 형식으로 출력해야 하는 경우가 있습니다. 예를들어, 공백으로 구분된 여러 정보가 한 개의 문자열로 주어질 때 각 정보를 하나씩 vector에 저장하는 함수를 구현하려고 합니다. 이 함수를...

[백준][10830] 행렬 제곱 (분할 정복 이용하기)

이 포스트는 백준 사이트의 행렬 제곱 문제 풀이입니다. 문제 해결 과정 문제의 요구 사항을 살펴보면 제곱 횟수(B의 값)이 최대 100,000,000,000번 (1’000억 번)이 될 수 있습니다. 행렬을 순차적으로 1’000억번 곱한다면 절대로 제한 시간 이내에 결과를 구할 수 없습니다. 따라서 이 문제는 순차 행렬 곱이 아닌 다른 ...

[.NET Orleans] Grain 1개당 Client 1개 연결 시도

결론부터 말하면, Grain 안에 TcpClient 멤버 구현은 옳지 않습니다. 이번 포스트에서는 Grain 안에 소켓 통신 구현이 필요했던 이유와 구현 이후 발생했던 문제점과 개선 방향에 대해 말하려고 합니다. Grain을 관리하는 것은 Orleans 프레임워크 Orleans 프레임워크에서 Grain은 이전 포스트에서 언급한 것처럼 1개의 액터...

채팅 프로그램을 만들자 - 프로젝트 기본 설정하기

포스트 ‘채팅 프로그램을 만들자’ 시리즈에서는 프로젝트가 어떤 의도로 설계 되었는지부터 서버 프로그램에서 IOCP를 1개가 아닌 여러 개를 사용하도록 변경한 이유까지 프로젝트를 진행하면서 있었던 일들을 다룰 예정입니다. 최근 네트워크 프로그래밍의 기본인 네트워크 소켓을 연구하기 위해 진행하고 있는 프로젝트가 있습니다. 이 프로젝트는 다수의 클...