https://www.acmicpc.net/problem/1780 1780번: 종이의 개수 N×N크기의 행렬로 표현되는 종이가 있다. 종이의 각 칸에는 -1, 0, 1 중 하나가 저장되어 있다. 우리는 이 행렬을 다음과 같은 규칙에 따라 적절한 크기로 자르려고 한다. 만약 종이가 모두 같은 수 www.acmicpc.net 해설 : N×N크기의 행렬로 표현되는 종이가 있다. 종이의 각 칸에는 -1, 0, 1 중 하나가 저장되어 있다. 우리는 이 행렬을 다음과 같은 규칙에 따라 적절한 크기로 자르려고 한다. 만약 종이가 모두 같은 수로 되어 있다면 이 종이를 그대로 사용한다. (1)이 아닌 경우에는 종이를 같은 크기의 종이 9개로 자르고, 각각의 잘린 종이에 대해서 (1)의 과정을 반복한다. 이와 같이 종이..
https://www.acmicpc.net/problem/1758 1758번: 알바생 강호 첫째 줄에 스타박스 앞에 서 있는 사람의 수 N이 주어진다. N은 100,000보다 작거나 같은 자연수이다. 둘째 줄부터 총 N개의 줄에 각 사람이 주려고 하는 팁이 주어진다. 팁은 100,000보다 작거나 같 www.acmicpc.net 해설 : 줄을 서 있는 손님들이 입장하는 순서대로 강호에게 팁을 준다. 원래 주려고 했던 팁이 10원이고 3번째로 들어갔다면 10 - (3 - 1) = 8원의 팁을 주게 된다. 손님들이 주려는 팁의 정보가 주어질 때 어떻게 줄을 세워야 가장 팁을 많이 받을 수 있는지 찾는 문제이다. 풀이 : 그리디하게 풀 수 있는 문제이다. 돈을 많이 주는 사람의 순으로 정렬하고 받을 수 있는 ..
이번 포스팅부터는 반말로 진행합니다.... 양해부탁드려요 카카오 맵 API 지도 삽입 웹 사이트의 기능 중 지도에 내 주변 동물병원과 동물약국을 찾아주는 서비스가 있기 때문에 지도를 사용할 수 밖에 없었다. 네이버 지도 API는 예전에 한 번 써보았고 Google maps API는 뭔가 우리나라 지도가 부실할 것 같아서 (실제론 어떤지 모른다.) 처음 써보기도 하고 한창 떠오르고 있다는 카카오 맵 API를 사용해보았다. 우선 카카오 맵 API를 사용하기 위해선 카카오 개발자(https://developers.kakao.com/) 에 회원가입하고 어플리케이션 등록을 해야한다. 이 부분은 사이트의 메뉴얼대로 하면 금방 할 수 있으니 넘어가겠다. 회원가입 후에 어플리케이션 등록까지 마치면 인증 키를 발급받아야..
https://www.acmicpc.net/problem/1753 1753번: 최단경로 첫째 줄에 정점의 개수 V와 간선의 개수 E가 주어진다. (1 ≤ V ≤ 20,000, 1 ≤ E ≤ 300,000) 모든 정점에는 1부터 V까지 번호가 매겨져 있다고 가정한다. 둘째 줄에는 시작 정점의 번호 K(1 ≤ K ≤ V)가 www.acmicpc.net 해설 : 그래프에서 V와 E의 정보가 주어지고 시작점의 정보가 주어질 때, 시작점에서부터 다른 모든 V까지의 최단거리(가중치 합의 최솟값)을 구하는 문제이다. 쉽게 말하면 다익스트라 기본형 문제이다. 풀이 : 다익스트라 알고리즘을 구현할 수 있는지 없는지를 묻는 문제이다. 다익스트라는 알고리즘중 구현이 쉽지 않기 때문에 단순 구현이지만 골드5의 난이도를 부여받..
https://www.acmicpc.net/problem/1744 1744번: 수 묶기 길이가 N인 수열이 주어졌을 때, 그 수열의 합을 구하려고 한다. 하지만, 그냥 그 수열의 합을 모두 더해서 구하는 것이 아니라, 수열의 두 수를 묶으려고 한다. 어떤 수를 묶으려고 할 때, 위치에 www.acmicpc.net 해설 : 수열 N이 주어질 때 이 수열의 합을 구하려고 한다. 이 때, 두 수를 위치에 상관없이 묶어 이 두 수는 곱해서 더할 수 있다고 한다. 이 조건에서 수열 합의 최댓값을 구하는 문제이다. 풀이 : 쉬운 문제이다. 주어진 수열을 음수와 양수로 분리한 후 (0은 음수로, 1은 따로 카운팅) 음수는 작은 값에서부터 2개씩 묶고 양수는 큰 값에서부터 2개씩 묶는다. 소스코드 : 1 2 3 4 5..
Node.js module 사용하는 모듈은 다음과 같습니다. 이는 프로젝트를 진행하며 계속해서 추가될 예정입니다. "dependencies": "body-parser": "^1.19.1", "cors": "^2.8.5", "ejs": "^3.1.6", "express": "^4.17.2", "nodemon": "^2.0.15", "passport": "^0.5.2" Directory 디렉토리 구조는 다음과 같습니다. DOM tree는 프로젝트 완성시에 추가할 예정입니다. 설명 node_modules : module이 들어있는 폴더입니다. public : img, css, js등 assets과 메인 페이지가 들어있는 폴더입니다. router : request별 라우팅 처리를 하기 위해 구현해놓은 라우터들의..
주제 선정 웹 사이트의 이름은 PetCares입니다. 이름에서 알 수 있듯이 반려동물을 위한 웹 서비스입니다. 초기 구상한 주요 기능은 다음과 같습니다. 내 근처의 동물병원과 동물약국을 지도에서 찾아주는 서비스 반려동물 정보 공유 커뮤니티 반려동물 정보 제공 이는 추후 추가되거나 수정될 수 있습니다. 프로젝트 목표 프로젝트의 핵심 목표는 다음과 같습니다. 안정적인 로그인 세션 환경 구현 암호화를 통한 회원정보(로그인 정보)의 보안성 유지 깔끔한 UI 배치 및 구성 프로젝트를 진행하며 얻고싶은 점은 다음과 같습니다. Login, Logout에서 세션의 이해 SHA 암호화의 이해 및 사용 경험 Passport와 LocalStrategy의 이해 REST API의 이해와 응용 AJAX의 구현 및 사용의 이해 H..
https://www.acmicpc.net/problem/1700 1700번: 멀티탭 스케줄링 기숙사에서 살고 있는 준규는 한 개의 멀티탭을 이용하고 있다. 준규는 키보드, 헤어드라이기, 핸드폰 충전기, 디지털 카메라 충전기 등 여러 개의 전기용품을 사용하면서 어쩔 수 없이 각종 전 www.acmicpc.net 해설 : 준규의 가전제품 사용 순서와, 멀티탬의 구멍 개수가 주어질 때, 모든 가전제품을 사용하기 위해 플러그를 최소한으로 빼는 횟수를 구하는 문제이다. 풀이 : 그리디하게 해결하였다. 현재 플러그가 꽉 차있을 때부터 replacement가 발생하는데 이 때 남은 프로세스들 중 빈도가 가장 낮은 프로세스를 대체하면 된다. 이 문제에서 사용된 replacement 방법은 프로세스의 replaceme..