
nodemailer 라이브러리를 사용해 gmail로 특정 email에게 mail보내는 api 실행 중 이 에러가 떴습니다.😱 찾아본 결과 이 에러의 원인은 gmail의 보안 수준때문에 생기는 에러였습니다. 여러가지 방법이 있었는데 일단 첫번째 SMTP와 기타 설정 에서 2단계에 보안 수준을 낮추는 방법이였습니다. 하지만 통하지 않았고... id에서 @gmail.com을 빼고, SSL로 바꾸어 port를 SMTPS로 바꾸는 등 여러가지 방법을 썼지만 결국은 구글 계정 관리 => 보안 => 2단계 인증을 해줍니다. 2단계 인증에서 기타를 고르고 env 파일에서 password를 2단계 인증에서 나온 password로 바꿔주면 완료입니다! 🤩 이유는 2단계 인증에서 만든 비밀번호는 한번 인증하면 계속 사용할 ..

문제 풀이방법 처음엔 function solution(w, h) { if (w === h) return (w * h) - w; if (w > h) return (w * h) - h * 2; if (h > w) return (w * h) - w * 2 } 이런식으로 입출력 예만 보고 2개씩 연결되기 때문에 길이가 적은 곳의 두배를 사용하지 못할 것이라고 생각했다.. 하지만 다른 예 (예를 들어 3 * 5)를 들어보니 맞지 않는다는 것을 알았고 반복하는 패턴에 집중하여 생각해 보았다. 위의 문제에 예를 보면 4개의 박스를 하나로 보고 4번 연속으로 겹치는 것을 알 수 있다. 이 블록은 2 * 3 크기이며 넓이가 8이고 높이가 12일때니까 두개를 4로 나눴을 때 2 * 3이 된다. ???? 근데 4는 최대공약..
const line = require("fs").readFileSync("/dev/stdin", "utf8"); let input = line.trim().split("\n"); let map = []; let destination = []; let result = 0; let size = 0; //나이트가 이동할 수 있는 경우의 수 const moves = [ [-2, -1], [-2, 1], [2, -1], [2, 1], [-1, -2], [-1, 2], [1, -2], [1, 2], ]; chess(); function chess() { test = parseInt(input.splice(0, 1)); for (i = 0; i < test; i++) { let cnt = 0; size = parse..
const line = require("fs").readFileSync("/dev/stdin", "utf8"); let input = line.trim().split("\n"); //3차원이므로 dz부분을 추가하고 위,아래,동,서,남,북 6가지로 나타내었다. const dx = [1, -1, 0, 0, 0, 0]; const dy = [0, 0, 1, -1, 0, 0]; const dz = [0, 0, 0, 0, 1, -1]; const [m, n, h] = input[0].split(" ").map(Number); input.splice(0, 1); let totalBox = []; let tomatos = []; let queue = []; let zero = 0; let cnt = 0; minimu..
const line = require("fs").readFileSync("/dev/stdin", "utf8"); let input = line.trim().split("\n"); const dx = [1, -1, 0, 0]; const dy = [0, 0, 1, -1]; const [m, n] = input[0].split(" ").map(Number); let tomatos = []; let queue = []; let zero = 0; let cnt = 0; minimumDate(); function minimumDate() { //토마토밭을 만드는 for문 for (let i = 1; i < n + 1; i++) { tomatos.push(input[i].split(" ").map(Number));..
const readline = require("readline"); let input = []; let maze = []; const rl = readline.createInterface({ input: process.stdin, output: process.stdout, }); rl.on("line", (line) => input.push(line.trim())).on("close", () => { //현재위치 1,1 //큐에 아래, 옆 1이면 저장 //아래부터 시작해서 //아래 위 const [n, m] = input[0].split(" ").map(Number); input.splice(0, 1); for (let i = 0; i < n; i++) { maze.push(input[i].split("..
const readline = require("readline"); let input = []; let cabbageField = []; let result = []; const rl = readline.createInterface({ input: process.stdin, output: process.stdout, }); rl.on("line", (line) => input.push(line.trim())).on("close", () => { const test = parseInt(input[0]); input.splice(0, 1); //여러 밭이 나올 수 있어 for문으로 반복 for (let repeat = 0; repeat < test; repeat++) { let count = 0; const..
const readline = require("readline"); let input = []; let map = []; let result = []; let [total, count] = [0, 0]; const rl = readline.createInterface({ input: process.stdin, output: process.stdout, }); rl.on("line", (line) => input.push(line.trim())).on("close", () => { const size = parseInt(input[0]); input.splice(0, 1); for (let i of input) { map.push(i.split("").map(Number)); } // 위는 입력받는 코드 ..
- Express
- slice
- Split
- 바이러스 dfs
- 코딩테스트
- SQL
- AWS
- 숫자야구게임
- 534 error
- JOIN
- 로그인
- 토마토3차원
- JavaScript
- Replace
- nodejs
- 정규표현식
- nodemailer error
- 백준
- left join
- 코드테스트
- sort
- GROUP BY
- 백준 7562 node
- smtp error
- 프로그래머스
- tolowercase
- 카카오2018[1차]
- Level 1
- 회원가입
- 백준 7569 node
- Total
- Today
- Yesterday