알고리즘/Samsung codeground

    11/22 블럭 없애기

    삼성 코드그라운드에서 제공하는 알고리즘에 관한 개인적인 풀이를 정리했습니다. 아래 사이트에서 직접 풀어보실 수 있습니다. https://www.codeground.org/practice 모든 알고리즘 문제는 C++로 구현되어 있습니다. 이 문제를 풀기 위해 단위시간 별로 외부 블록을 깎아나가는 형식을 사용한다고 했을 때, 다음과 같은 코드를 생각해 볼 수 있다. #include using namespace std; int Answer; // 블럭 없애기(시간 초과) int main(int argc, char** argv) { int T, test_case; cin >> T; for (test_case = 0; test_case < T; test_case++) { Answer = 0; int i, n, b..

    11/19 좋은 수

    삼성 코드그라운드에서 제공하는 알고리즘에 관한 개인적인 풀이를 정리했습니다. 아래 사이트에서 직접 풀어보실 수 있습니다. https://www.codeground.org/practice 모든 알고리즘 문제는 C++로 구현되어 있습니다. 처음 이 문제를 봤을 때는 배열을 순회하면서 현재 수 보다 앞에 있는 수들을 재귀 호출을 통해 더해보면서 좋은 수를 판별하는 방식을 생각했다. #include #include using namespace std; int Answer, arr[5000], chk[200000]; //좋은 수(첫 코드, 시간 초과) void getGoodNum(int objIdx, int prev, int idx, int sum) { if (chk[objIdx]) return; if (idx ..

    11/19 미궁 속의 방

    삼성 코드그라운드에서 제공하는 알고리즘에 관한 개인적인 풀이를 정리했습니다. 아래 사이트에서 직접 풀어보실 수 있습니다. https://www.codeground.org/practice 모든 알고리즘 문제는 C++로 구현되어 있습니다. 이 문제를 처음 봤을때는 전처리를 통해서 미리 맵을 저장 해놓고, 좌표에 따라서 답을 계산하면 될 거라고 생각했다. 하지만 N이 최대 100000까지 들어올 수 있어서 미리 맵을 저장 하면 메모리 제한을 넘어가는 경우가 생겼고, 따라서 다른 방법을 찾아야 했다. 문제를 해결하기 위해 좌표를 만져보던 중, 첫 번째 방을 좌표 (0, 0) 으로 해서 2, 3번째 방을 각각 좌표 (0, 1), (1, 0), 4, 5, 6번째 방을 각각 좌표 (2, 0), (1, 1), (0, ..