본문 바로가기

분류 전체보기365

[백준 2468번] 안전 영역 문제 링크 >> https://www.acmicpc.net/problem/2468 📋 문제 재난방재청에서는 많은 비가 내리는 장마철에 대비해서 다음과 같은 일을 계획하고 있다. 먼저 어떤 지역의 높이 정보를 파악한다. 그다음에 그 지역에 많은 비가 내렸을 때 물에 잠기지 않는 안전한 영역이 최대로 몇 개가 만들어지는 지를 조사하려고 한다. 이때, 문제를 간단하게 하기 위하여, 장마철에 내리는 비의 양에 따라 일정한 높이 이하의 모든 지점은 물에 잠긴다고 가정한다. 어떤 지역의 높이 정보는 행과 열의 크기가 각각 N인 2차원 배열 형태로 주어지며 배열의 각 원소는 해당 지점의 높이를 표시하는 자연수이다. 예를 들어, 다음은 N=5인 지역의 높이 정보이다. 이제 위와 같은 지역에 많은 비가 내려서 높이가 4.. 2022. 2. 27.
[백준 1743번] 음식물 피하기 문제 링크 >> https://www.acmicpc.net/problem/1743 📋 문제 코레스코 콘도미니엄 8층은 학생들이 3끼의 식사를 해결하는 공간이다. 그러나 몇몇 비양심적인 학생들의 만행으로 음식물이 통로 중간 중간에 떨어져 있다. 이러한 음식물들은 근처에 있는 것끼리 뭉치게 돼서 큰 음식물 쓰레기가 된다. 이 문제를 출제한 선생님은 개인적으로 이러한 음식물을 실내화에 묻히는 것을 정말 진정으로 싫어한다. 참고로 우리가 구해야 할 답은 이 문제를 낸 조교를 맞추는 것이 아니다. 통로에 떨어진 음식물을 피해가기란 쉬운 일이 아니다. 따라서 선생님은 떨어진 음식물 중에 제일 큰 음식물만은 피해 가려고 한다. 선생님을 도와 제일 큰 음식물의 크기를 구해서 “10ra"를 외치지 않게 도와주자. 👉 입.. 2022. 2. 26.
exports와 module.exports 비교 ✅ exports와 module.exports 비교 Node.js가 사용하는 CommonJS 방식으로 모듈을 선언하는 것은 exports와 module.exports의 두 가지 방법이 존재한다. ✔️ exports --- a.js --- exports.A = (a, b) => a + b; --- b.js --- const Func = require('./a'); console.log(Func); console.log(Func.A(1, 2)); // output // { A: [Function (anonymous)] } // 3 a.js에서 A라는 함수를 exports 했고 이를 b.js에서 require해 Func로 받아왔다. 이때 Func를 출력해보면 객체 안에 A라는 함수가 담겨있는 것을 확인할 수 .. 2022. 2. 26.
[6주차] 3계층 설계 2월 26일 자 학습 내용 정리입니다. ✅설계 프로그래밍에서의 코드 설계란 코드와 파일, 폴더 구조를 설계하는 것을 말한다. 하나의 파일에 모든 코드를 작성하는 것과 같이 적절한 설계 과정이 이루어 지지 않은 경우 다음과 같은 문제가 발생할 수 있다. 수정할 사항을 찾기 힘들다. (유지보수가 어렵다.) 코드와 코드 사이의 관계를 파악하기 힘들다. 각 코드의 역할과 기능이 명확히 구분되어 있지 않아 기능별로 테스트(유닛테스트)를 진행하는 것이 어렵다. 하나의 파일을 여러 사람이 동시에 수정하기는 힘들기 때문에 분업이 어렵다. 새로운 기능을 추가하고자 할 때 기존 코드의 어느 부분에 수정, 추가할지 알아내기 힘들기 때문에 확장성이 부족하다. 따라서 위의 문제들을 해결하기 위해 코드 설계 구조가 만들어진 것이.. 2022. 2. 26.
[6주차] OAuth와 Nginx 2월 25일 자 학습 내용 정리입니다. ✅ OAuth OAuth(Open Authorization)는 서비스 제공자가 다른 서비스에게 데이터를 제공하기 위해 서비스 사용자에게 제공하는 사용자 인증방식의 표준을 의미한다. OAuth 동작 방식은 아래와 같다. 서비스 제공자에게 인증 요청 인증 완료 후 사용자 정보를 요청한 서비스로 전달 인증 정보를 이용해 서비스 제공자의 데이터 사용 ✏️ 예제 - 구글 로그인 구현 passport가 제공하는 구글 로그인 구현체인 passport-google-oauth20을 사용하면 구글 로그인을 구현할 수 있다. const GoogleStrategy = require('passport-google-oauth20').Strategy; const config = { clien.. 2022. 2. 25.
[6주차] JSON Web Token 2월 25일 자 학습 내용 정리입니다. ✅ JWT JWT(JSON Web Token)는 인증을 위한 정보를 전자 서명을 이용하여 확인하는 방법이다. session과 달리 정보를 가져오거나 보낼 때 특별한 저장소를 이용하지 않는다. session은 기본적으로 웹 브라우저의 통신 스펙이기 때문에 모바일 앱 등 웹 브라우저가 아닌 어플리케이션의 경우 이를 활용하기 부적합하다. 반면 JWT는 어느 클라이언트에서나 동일한 방식의 사용자 인증을 구현할 수 있다. JWT는 header, payload, signature의 세 가지 구성요소로 이루어진다. header : 토큰의 타입, 데이터 서명 방식 payload : 전달되는 데이터 signature : header와 payload의 전자서명 JWT는 이름에서도 알.. 2022. 2. 25.
[백준 1325번] 효율적인 해킹 문제 링크 >> https://www.acmicpc.net/problem/1325 📋 문제 해커 김지민은 잘 알려진 어느 회사를 해킹하려고 한다. 이 회사는 N개의 컴퓨터로 이루어져 있다. 김지민은 귀찮기 때문에, 한 번의 해킹으로 여러 개의 컴퓨터를 해킹 할 수 있는 컴퓨터를 해킹하려고 한다. 이 회사의 컴퓨터는 신뢰하는 관계와, 신뢰하지 않는 관계로 이루어져 있는데, A가 B를 신뢰하는 경우에는 B를 해킹하면, A도 해킹할 수 있다는 소리다. 이 회사의 컴퓨터의 신뢰하는 관계가 주어졌을 때, 한 번에 가장 많은 컴퓨터를 해킹할 수 있는 컴퓨터의 번호를 출력하는 프로그램을 작성하시오. 👉 입력 첫째 줄에, N과 M이 들어온다. N은 10,000보다 작거나 같은 자연수, M은 100,000보다 작거나 같.. 2022. 2. 24.
[백준 1012번] 유기농 배추 문제 링크 >> https://www.acmicpc.net/problem/1012 📋 문제 차세대 영농인 한나는 강원도 고랭지에서 유기농 배추를 재배하기로 하였다. 농약을 쓰지 않고 배추를 재배하려면 배추를 해충으로부터 보호하는 것이 중요하기 때문에, 한나는 해충 방지에 효과적인 배추 흰 지렁이를 구입하기로 결심한다. 이 지렁이는 배추근처에 서식하며 해충을 잡아먹음으로써 배추를 보호한다. 특히, 어떤 배추에 배추흰지렁이가 한 마리라도 살고 있으면 이 지렁이는 인접한 다른 배추로 이동할 수 있어, 그 배추들 역시 해충으로부터 보호받을 수 있다. 한 배추의 상하좌우 네 방향에 다른 배추가 위치한 경우에 서로 인접해있는 것이다. 한나가 배추를 재배하는 땅은 고르지 못해서 배추를 군데군데 심어 놓았다. 배추들이.. 2022. 2. 24.
[백준 1260번] DFS와 BFS 문제 링크 >> https://www.acmicpc.net/problem/1260 📋 문제 그래프를 DFS로 탐색한 결과와 BFS로 탐색한 결과를 출력하는 프로그램을 작성하시오. 단, 방문할 수 있는 정점이 여러 개인 경우에는 정점 번호가 작은 것을 먼저 방문하고, 더 이상 방문할 수 있는 점이 없는 경우 종료한다. 정점 번호는 1번부터 N번까지이다. 👉 입력 첫째 줄에 정점의 개수 N(1 ≤ N ≤ 1,000), 간선의 개수 M(1 ≤ M ≤ 10,000), 탐색을 시작할 정점의 번호 V가 주어진다. 다음 M개의 줄에는 간선이 연결하는 두 정점의 번호가 주어진다. 어떤 두 정점 사이에 여러 개의 간선이 있을 수 있다. 입력으로 주어지는 간선은 양방향이다. 👈출력 첫째 줄에 DFS를 수행한 결과를, 그 .. 2022. 2. 24.