본문 바로가기

전체 글262

[node.js] fs.write()로 알아보는 node.js javascript는 Netscape에서 만든 프로그래밍 언어이며 브라우저에서 버튼을 눌렀을 때 색상이 변경되거나, alert창이 뜨는 등 주로 browser에서 화면을 조작하기 위해 사용되었습니다. 하지만 2009년 node.js가 등장하면서 javascript는 단지 browser에서 화면을 조작 하는데만 그치지 않고 파일을 읽거나, network I/O, process 등 브라우저 밖에서 동작할 수 있게 되었습니다. node.js 공식문서에서는 node.js를 다음과 같이 소개하고 있습니다. Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine. 여기서 runtime은 javascript가 실행되는 환경을 의미합니다. 사실 .. 2021. 9. 17.
[네트워크] TCP/IP 4 Layer TCP/IP 프로토콜은 명칭 그대로 TCP와 IP 두 가지의 프로토콜을 주축으로 한 프로토콜 집합입니다. 주축이라고 하지만 TCP를 반드시 사용해야 하는 것은 아니며 IP는 통신 상대 지정 시에 IP 주소를 사용하기 때문에 반드시 필요합니다. OSI 참조 모델에서는 7계층으로 분할했지만 TCP/IP에서는 반드시 이 7계층이 분명하게 나뉘어지는 것은 아닙니다. TCP/IP 4계층 모델등으로 불리며 OSI 7계층의 1~2 계층을 모아서 링크 계층, 5~7계층을 모아서 애플리케이션으로 취급합니다. TCP/IP 모형은 현재의 인터넷에서 컴퓨터들이 서로 정보를 주고받는데 쓰이는 통신규약(프로토콜)의 모음으로 각 계층은 담당하는 위치마다 처리 역할을 구분해 진행함으로 서로 간의 간섭을 최소화하여 사용의 편리성을 높.. 2020. 12. 12.
[알고리즘문제] 프로그래머스 - 단어 퍼즐 같은 문자를 여러번 사용할 수 있다고 하였으니 재귀로 해결하는 방법을 생각해 보았다. tmp+=strs[n+1]를 계속하면서 tmp의 길이가 t보다 길면 재귀를 탈출하고 tmp+=strs[n+1]을 더하는 구조로 생각해 보았다. 하지만 틀렸다고 나왔고 다른 분의 풀이를 참고하였다. 2중 for문을 사용하여 dp로 최선의 값을 계속 갱신할 수 있다. #include #include #include #include #include using namespace std; int solution(vector strs, string t) { int answer = 0; set s; vector dp(t.length() + 1, INT_MAX); for (int i = 0; i < strs.size(); i++) {.. 2020. 11. 12.
[알고리즘 문제] 백준1238 - 파티 www.acmicpc.net/problem/1238 1238번: 파티 첫째 줄에 N(1 ≤ N ≤ 1,000), M(1 ≤ M ≤ 10,000), X가 공백으로 구분되어 입력된다. 두 번째 줄부터 M+1번째 줄까지 i번째 도로의 시작점, 끝점, 그리고 이 도로를 지나는데 필요한 소요시간 Ti가 들어 www.acmicpc.net N개의 집이있고 서로의 집을 이동하는데 시간이 다를때(a->b,b->a는 서로 다름) 하나의 집으로 모이는데 가장 오랜 시간을 걸리는 시간을 구하는 문제입니다. 문제 분류는 다익스트라 알고리즘으로 되어있는데 저는 플로이드 와샬 알고리즘으로 풀었습니다. 두개의 알고리즘 모두 최단거리를 구하는 알고리즘 이지만, 조금 다릅니다. 다익스트라 알고리즘 : 하나의 정점에서 다른 정점으로 가는.. 2020. 10. 23.
[알고리즘 문제] 백준5014 - 스타트 링크 www.acmicpc.net/problem/5014 5014번: 스타트링크 첫째 줄에 F, S, G, U, D가 주어진다. (1 ≤ S, G ≤ F ≤ 1000000, 0 ≤ U, D ≤ 1000000) 건물은 1층부터 시작하고, 가장 높은 층은 F층이다. www.acmicpc.net bfs를 사용하여 문제를 해결할 수 있다. 만약 현재 강호 위치에서 위/아래로 이동할 수 있으면 그 위치를 que에 계속 넣어주고 만약 현재 위치가 도착지점이라면 그때 이동한 횟수를 출력해주면 된다. 단순히 que에 넣고 빼는 과정이지만 신경써주어야 할 부분이 2가지 있다. 1. 현재의 que 사이즈 만큼 검사해준다. 검사를 진행하면서 계속 que에 넣는 과정이 진행되는데 이렇게 되면 하루가 어떻게 지났는지 확인할 수 없다.. 2020. 10. 23.
[알고리즘 문제] 백준1937 - 욕심쟁이 판다 www.acmicpc.net/problem/1937 1937번: 욕심쟁이 판다 n*n의 크기의 대나무 숲이 있다. 욕심쟁이 판다는 어떤 지역에서 대나무를 먹기 시작한다. 그리고 그 곳의 대나무를 다 먹어 치우면 상, 하, 좌, 우 중 한 곳으로 이동을 한다. 그리고 또 그곳에서 www.acmicpc.net 조건을 만족하면서 판다가 가장 멀리 움직일 수 있는 경로를 구하는 문제 입니다. 그냥 일반적인 dfs방식으로 풀면 4^500의 시간복잡도를 가지므로 dfs + dp로 문제를 해결해야 합니다. 먼저 dp[][]를 모두 -1로 초기화 해주어야 하는데 이는 아직 해당 좌표를 한번도 방문한 적이 없다는 것을 의미합니다. 만약 dp[][]값이 -1이면 검사를 해주어야 하고 dp[][]값이 -1이 아닌 경우는 해.. 2020. 10. 23.
[알고리즘 문제] 백준2537 - 빙산 www.acmicpc.net/problem/2573 2573번: 빙산 첫 줄에는 이차원 배열의 행의 개수와 열의 개수를 나타내는 두 정수 N과 M이 한 개의 빈칸을 사이에 두고 주어진다. N과 M은 3 이상 300 이하이다. 그 다음 N개의 줄에는 각 줄마다 배열의 각 행을 www.acmicpc.net bfs와 dfs를 활용하여 문제를 풀었습니다. 먼저 각각 빙산의 높이를 인접한 바다의 수만큼 감소시키고(bfs), 빙산을 2덩어리 이상으로 분리할 수 있는지 체크합니다. 여기서 분리할 수 있으면 그때의 시간을 출력하고, que에서 빙산이 없으면 0을 출력하게 합니다. 처음 배열의 크기를 10000 x 10000을 했더니 메모리 초과가 나와서 문제에서 사용한 모든 배열을 동적할당을 하였습니다. #includ.. 2020. 10. 22.
[알고리즘 문제] 백준2644 - 촌수계산 www.acmicpc.net/problem/2644 2644번: 촌수계산 사람들은 1, 2, 3, …, n (1≤n≤100)의 연속된 번호로 각각 표시된다. 입력 파일의 첫째 줄에는 전체 사람의 수 n이 주어지고, 둘째 줄에는 촌수를 계산해야 하는 서로 다른 두 사람의 번호가 주어진� www.acmicpc.net bfs로 문제를 해결할 수 있으며 시작점을 기준으로 그래프에서 연결되어 있는 노드를 이동하면서 노드의 위치가 도착지점이면 그때의 dis값을 출력하도록 합니다. 그래프에서 이동한 노드는 다시 방문하면 안되기 때문에 이 부분은 check[]로 관리하였습니다. #include #include using namespace std; int main() { int n, start, des, m; cin >.. 2020. 10. 16.
[알고리즘 문제] 백준1916 - 최소비용 www.acmicpc.net/problem/1916 1916번: 최소비용 구하기 첫째 줄에 도시의 개수 N(1 ≤ N ≤ 1,000)이 주어지고 둘째 줄에는 버스의 개수 M(1 ≤ M ≤ 100,000)이 주어진다. 그리고 셋째 줄부터 M+2줄까지 다음과 같은 버스의 정보가 주어진다. 먼저 처음에는 그 www.acmicpc.net 다익스트라 알고리즘을 사용하여 해결하였습니다. 핵심은 우선순위 큐에 넣을 때 음수화, 뺄때 음수화를 해주는 것인데 이는 같은 도시로 비용이 적은 순으로 정렬하기 위함입니다. 예를 들어 [1,2],[1,3]을 그냥 넣게 되면 [1,3]이 [1,2]보다 높은 우선순위를 가지는데 [1,-2],[1,-3]의 경우 [1,-2]이 [1,-3]보다 높은 우선순위를 가지고 -에 다시 -를 붙.. 2020. 10. 16.