전체 글 164

백준 17071번 숨바꼭질 5 ( C++ )

문제https://www.acmicpc.net/problem/17071 해설+1 -1을 통해 2*n번째 전 자리에 돌아갈 수 있다는것이 핵심인 문제이를 통해 짝수번째에 갔던 자리 or 홀수번째에 갔던 자리는 각각 짝수/홀수일때 다시 갈 수 있는것이 핵심코드1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556// 플러드필#include bits/stdc++.h>using namespace std; int n, k, timeNow;int ret = -1;int visited[2][500004]; void bfs(int start){  queueint> q;  q.push(sta..

백준 13913번 숨바꼭질 4 ( C++ )

문제https://www.acmicpc.net/problem/13913 해설최단경로를 찾는 문제이기 때문에 BFS사용어떤 경로로 이동했는지를 알려줘야 하기 때문에 last사용(prev로 바꿀것) 코드12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061#include bits/stdc++.h>using namespace std; int n, k;int visited[2000004];int last[200004];stackint> ret; void bfs(int start){  visited[start] = 1;  queueint> q;  q.push(star..

백준 12851번 숨바꼭질 2 ( C++ )

문제https://www.acmicpc.net/problem/12851 해설최단거리를 묻는 문제이기 때문에 BFS사용모든 경우의 수를 구하라고 했기 때문에 visited 이외에 cnt를 사용하여 경우의 수 계산 코드123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051#include bits/stdc++.h>using namespace std; int n, k;int visited[200001];int cnt[200001]; void bfs(int num){  queueint> q;  int now_num = num;  q.push(num);  visited[num] = 1;  cnt[num]..

백준 16637번 괄호 추가하기 ( C++ )

문제https://www.acmicpc.net/problem/16637 해설조금 특수한 경우의 combi함수 사용연산자 2개 안에서의 순서가 정해져있음 코드12345678910111213141516171819202122232425262728293031323334353637383940414243444546#include bits/stdc++.h>using namespace std; int n;int ret = INT_MIN;string line;vectorint> num_list;vectorchar> oper_list; int cal(int a, int b, char c){  if (c == '+')    return a + b;  else if (c == '-')    return a - b;  else..

[node.js] Express 서버에 MongoDB연결하기

1. root 디렉토리에 ".env"파일 만들기 2. ".env"파일 안에 "MONGODB_URI=mongodb://:@your_host:your_port/your_database" 입력하기( database의 경우 존재하지 않으면 실행시 자동으로 생성 ) 3. 환경 변수 로드를 위해 dotenv패키지 설치 ( git bash에 "npm install dotenv" 입력 ) 4. database 관련 파일 생성 후 아래 코드와 같이 설정 ( 다른 방식으로도 가능 예시일 뿐 )123456789101112131415const mongoose = require('mongoose'); const uri = process.env.MONGODB_URI;if (!uri) {    console.error('MONGO..

백준 12869번 뮤탈리스크 ( C++ )

문제 https://www.acmicpc.net/problem/12869 12869번: 뮤탈리스크 1, 3, 2 순서대로 공격을 하면, 남은 체력은 (12-9, 10-1, 4-3) = (3, 9, 1)이다. 2, 1, 3 순서대로 공격을 하면, 남은 체력은 (0, 0, 0)이다. www.acmicpc.net 해설 3차원 길찾기 문제라고 생각하면 조금 더 쉬워지는 문제 중복되는 경우에 대한 예외처리는 꼭 해주자 코드 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58..

백준 4179번 불! ( C++ )

문제 https://www.acmicpc.net/problem/4179 4179번: 불! 입력의 첫째 줄에는 공백으로 구분된 두 정수 R과 C가 주어진다. 단, 1 ≤ R, C ≤ 1000 이다. R은 미로 행의 개수, C는 열의 개수이다. 다음 입력으로 R줄동안 각각의 미로 행이 주어진다. 각각의 문자 www.acmicpc.net 해설 설명이 부족했던 문제.. 불이 여러개라는 점을 잘 파악해야하며 정해진 맵 밖으로는 불이 퍼지지 않는다는점에 유의해서 코드를 작성해야함 코드 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 4..

백준 16234번 인구 이동 ( C++ )

문제 https://www.acmicpc.net/problem/16234 16234번: 인구 이동 N×N크기의 땅이 있고, 땅은 1×1개의 칸으로 나누어져 있다. 각각의 땅에는 나라가 하나씩 존재하며, r행 c열에 있는 나라에는 A[r][c]명이 살고 있다. 인접한 나라 사이에는 국경선이 존재한다. 모 www.acmicpc.net 해설 완탐으로 해결하는 간단한 문제 dfs의 실행 횟수보다는 인구이동이 발생했는지를 체크하는 변수가 있었으면 더 깔끔했을듯 하다. 코드 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 4..

백준 2589번 보물섬 ( C++ )

문제 https://www.acmicpc.net/problem/2589 2589번: 보물섬 보물섬 지도를 발견한 후크 선장은 보물을 찾아나섰다. 보물섬 지도는 아래 그림과 같이 직사각형 모양이며 여러 칸으로 나뉘어져 있다. 각 칸은 육지(L)나 바다(W)로 표시되어 있다. 이 지도에서 www.acmicpc.net 해설 (50*50)* (50*50)의 경우의 수 이므로 1000만 이하이기 때문에 모든 정점에 대해 bfs를 돌며 최단거리 구하기 이때 첫 시작점을 1로 설정해줘야 첫 시작점으로 돌아가는 경우를 막을 수 있음 ( 결과에서 1 빼주기) 코드 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 3..

백준 15686번 치킨 배달 ( C++ )

문제 https://www.acmicpc.net/problem/15686 15686번: 치킨 배달 크기가 N×N인 도시가 있다. 도시는 1×1크기의 칸으로 나누어져 있다. 도시의 각 칸은 빈 칸, 치킨집, 집 중 하나이다. 도시의 칸은 (r, c)와 같은 형태로 나타내고, r행 c열 또는 위에서부터 r번째 칸 www.acmicpc.net 해설 완탐 / 백트래킹 문제 조합 함수만 잘 만들면 어렵지 않은 문제 코드 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 5..