분류 전체보기

[인프런] Node.js / 섹션3 - 문자열 탐색 / 4. 가장 짧은 문자거리

문자열 s와 문자 t가 주어지면 문자열 s의 각 문자가 문자 t와 떨어진 최소거리를 출력 나의 풀이 function solution(s, t) { let answer = ""; let tArr = []; let tIdx = s.indexOf(t); let distance; let nowDistance; s = s.split(""); while (tIdx != -1) { tArr.push(tIdx); tIdx = s.indexOf(t, tIdx + 1); } for (let i = 0; i < s.length; i++) { distance = Number.MAX_SAFE_INTEGER; for (let j = 0; j < tArr.length; j++) { nowDistance = Math.abs(s.in..

[인프런] Node.js / 섹션3 - 문자열 탐색 / 3. 숫자만 추출

나의 풀이 function solution(str) { let answer = parseInt(str.replace(/[^0-9]/g, "")); return answer; } let str = "g0en2T0s8eSoft"; console.log(solution(str)); 이 방법 외에도 match() 메서드로 이용해 정규식과 매치되는 부분을 검색해서 풀 수 있다. 강사 풀이 function solution2(str) { let answer = ""; for (let x of str) { if (!isNaN(x)) answer += x; } return parseInt(answer); } let str = "g0en2T0s8eSoft"; console.log(solution2(str)); 다른 풀이

[인프런] Node.js / 섹션3 - 문자열 탐색 / 2. 유효한 팰린드롬

앞에서 읽을 때나 뒤에서 읽을 때나 같은 문자열을 팰린드롬이라 함 문자열이 입력되면 해당 문자열이 팰린드롬이면 "YES", 아니면 “NO"를 출력 단 회문을 검사할 때 알파벳만 가지고 회문을 검사하며, 대소문자를 구분하지 않음 알파벳 이외의 문자들은 무시 나의 풀이 function solution(s) { let answer = "YES"; let string = s.toUpperCase(); // filter 메서드는 배열에서만 호출 가능 string = Array.from(string).filter( (x) => x.charCodeAt() >= 65 && x.charCodeAt()

[인프런] Node.js / 섹션3 - 문자열 탐색 / 1. 회문 문자열

앞에서 읽을 때나 뒤에서 읽을 때나 같은 문자열을 회문 문자열이라고 함 해당 문자열이 회문 문자열이면 "YES", 회문 문자열이 아니면 “NO"를 출력 대소문자를 구분하지 않음 나의 풀이 function solution(s) { let answer = "YES"; let string = s.toUpperCase(); let length = string.length; for (let i = 0; i < Math.floor(length / 2); i++) { if (string[i] !== string[length - i - 1]) answer = "NO"; } return answer; } let str = "goooG"; console.log(solution(str)); 처음엔 for문 조건을 i < l..

[인프런] Node.js / 섹션2 - 1, 2차원 탐색 / 7. 봉우리

N*N 격자판 각 격자 판의 숫자 중 자신의 상하좌우 숫자보다 큰 숫자는 봉우리 지역 격자의 가장자리는 0으로 초기화 되었다고 가정 봉우리 지역이 몇 개 있는 지 알아내기 나의 풀이 function solution(arr) { let answer = 0; let N = arr.length; let array = Array.from(Array(N + 2), () => Array(N + 2).fill(0)); // 격자판 세팅 for (let i = 1; i array[i][j + 1] ) { answer++; } } } return answer; } let arr = [ [5, 3, 7, 2, 3], [3, 7, 1, 6, 1], [7, 2, 5, 3, 4], [4, 3, 6, 4, 1], [8, 7, 3..

[인프런] Node.js / 섹션2 - 1, 2차원 탐색 / 6. 격자판 최대합

N*N의 격자판이 주어지면 각 행의 합, 각 열의 합, 두 대각선의 합 중 가 장 큰 합을 출력 나의 풀이 function solution(arr) { let answer; let N = arr.length; let rowSum = 0; let columnSum = 0; let diagonalSum = 0; let diagonalSum2 = 0; for (let i = 0; i < N; i++) { rowSum = 0; columnSum = 0; for (let j = 0; j < N; j++) { rowSum += arr[i][j]; columnSum += arr[j][i]; } } for (let i = 0; i < N; i++) { diagonalSum += arr[i][i]; diagonalSum..

[모던 자바스크립트 Deep Dive] 18장 - 함수와 일급 객체

18.1 일급 객체다음 조건을 만족하는 객체를 일급 객체라고 함무명의 리터럴로 생성할 수 있다. 즉, 런타임에 생성 가능하다변수나 자료구조(객체, 배열 등)에 저장할 수 있다함수의 매개변수에 전달할 수 있다함수의 반환값으로 사용할 수 있다js 함수는 위 조건을 모두 만족하므로 일급 객체다// 1. 함수는 무명의 리터럴로 생성할 수 있다.// 2. 함수는 변수에 저장할 수 있다.// 런타임(할당 단계)에 함수 리터럴이 평가되어 함수 객체가 생성되고 변수에 할당된다.const increase = function (num) { return ++num;};const decrease = function (num) { return --num;};// 2. 함수는 객체에 저장할 수 있다.const auxs = {..

JavaScript 2023.01.09

[모던 자바스크립트 Deep Dive] 17장 - 생성자 함수에 의한 객체 생성

도입객체 리터럴 이외에 다양한 객체 생성 방식 중에서 생성자 함수를 사용하여 객체를 생성하는 방식17.1 Object 생성자 함수new 연산자와 함께 Object 생성자 함수를 호출하면 빈 객체를 생성하여 반환빈 객체를 생성한 이후 프로퍼티 또는 메서드를 추가하여 객체를 완성할 수 있음// 빈 객체의 생성const person = new Object();// 프로퍼티 추가person.name = 'Lee';person.sayHello = function () { console.log('Hi! My name is ' + this.name);};console.log(person); // {name: "Lee", sayHello: ƒ}person.sayHello(); // Hi! My name is Lee생..

JavaScript 2023.01.09