api client tool로 다찍어보기 30분 정도 (완료)
nodemailer 활용하기 (못함...)
알고리즘 1문제 풀기 (진행예정)
Node.js로 백준 문제 풀이할때 유의할 점들
//1. 하나의 값을 입력받을때
const input = require('fs').readFileSync('/dev/stdin').toString().trim();
//2. 공백으로 구분된 한 줄의 값들을 입력받을 때
const input = require('fs').readFileSync('/dev/stdin').toString().trim().split(' ');
//3. 여러 줄의 값들을 입력받을 때
const input = require('fs').readFileSync('/dev/stdin').toString().trim().split('\n');
// 4. 첫 번째 줄에 자연수 n을 입력받고, 그 다음줄에 공백으로 구분된 n개의 값들을 입력받을 때
const [n, ...arr] = require('fs').readFileSync('/dev/stdin').toString().trim().split(/\s/);
// 5. 첫 번째 줄에 자연수 n을 입력받고, 그 다음줄부터 n개의 줄에 걸쳐 한 줄에 하나의 값을 입력받을 때
const [n, ...arr] = require('fs').readFileSync('/dev/stdin').toString().trim().split('\n');
// 6. 하나의 값 또는 공백으로 구분된 여러 값들을 여러 줄에 걸쳐 뒤죽박죽 섞여서 입력받을 때
// ex) n 입력 - 공백으로 구분된 n개의 값 입력 - m 입력 - 여러 줄에 걸쳐 m개의 값 입력
const input = require('fs').readFileSync('/dev/stdin').toString().trim().split(/\s/);
const n = input[0];
const n_arr = input.slice(1, n+1);
const [m, ...m_arr] = input.slice(n+1);
// 2~6에서 입력받는 값들을 모두 String에서 Number로 바꾸려면 split()뒤에 .map(v => +v)를 추가
진짜 궁금했던 부분
Q. trim( )은 왜 쓰는 건가요??
⇒ 일부 입력값의 마지막에 개행문자가 포함된 경우가 종종있다.
이런 경우 split(”\n”)할 경우 공백문자 하나를 더 갖는 배열을 반환한다. 이를 방지하기 위해서 trim()을 사용한다.
예시 코드
const text = '가\n나\n다\n';
console.log(text.split('\n')); // ['가', '나', '다', '']
console.log(text.trim().split('\n')); // ['가', '나', '다']
Mac OpenSSL 설치 방법(링크 참고 바람)
https://freestrokes.tistory.com/154
결과로 나온 수에 같은 작업을 1이 될 때까지 반복합니다.`
예를 들어, 입력된 수가 6이라면 6→3→10→5→16→8→4→2→1 이 되어 총 8번 만에 1이 됩니다. 위 작업을 몇 번이나 반복해야하는지 반환하는 함수, solution을 완성해 주세요. 단, 작업을 500번을 반복해도 1이 되지 않는다면 –1을 반환해 주세요.
입력된 수, num
은 1 이상 8000000 미만인 정수입니다.
입출력 예 #1문제의 설명과 같습니다.
입출력 예 #216 -> 8 -> 4 -> 2 -> 1 이되어 총 4번만에 1이 됩니다.
입출력 예 #3626331은 500번을 시도해도 1이 되지 못하므로 -1을 리턴해야합니다.
function solution(num) {
let answer = 0
//최대 500번 반복한다고하였으니 500번 반복실행시킨다.
for (let i = 0; i < 500; i ++) {
if (num !== 1) { //만약 num이 1이 아닐경우에는
//짝수는 2를 나누고 홀수는 3을 곱하고 1을 더한다.
num = num % 2 === 0 ? num / 2 : num * 3 + 1
} else { // num이 1인 경우에는
// 몇번이나 반복 실행하였는지 출력한다.
return answer = i
}
}
// 500번을 반복하였는데도 1이 나오지 않는다면 -1을 출력한다.
return answer = -1;
}
function solution(num) {
let answer = 0
//최대 500번 반복한다고하였으니 500번 반복실행시킨다.
for (let i = 0; i < 500; i ++) {
if (num !== 1) { //만약 num이 1이 아닐경우에는
//짝수는 2를 나누고 홀수는 3을 곱하고 1을 더한다.
num = num % 2 === 0 ? num / 2 : num * 3 + 1
} else { // num이 1인 경우에는
// 몇번이나 반복 실행하였는지 출력한다.
return answer = i
}
}
// 500번을 반복하였는데도 1이 나오지 않는다면 -1을 출력한다.
return answer = -1;
}