배열 (13) 썸네일형 리스트형 [프로그래머스] 시저 암호 - 자바스크립트 문제 설명 문제 풀이 시저 암호의 대소문자 구문이 조금 어려웠던 문제였다. 나의 풀이는 크게 4가지 단계로 나뉘어져 있다. 1. 알파벳들을 모두 배열로 바꾼다. let lower = 'abcdefghijklmnopqrstuvwxyz' let upper = lower.toUpperCase(); let arrLower = lower.split(''); let arrUpper = upper.split(''); let arrTempIndex = []; let answer = []; 2. 받아온 문자열 s의 배열을 알파벳 배열에서 찾아 인덱스 번호로 바꿔준다. for(let i = 0; i (x + n) % arrLower.length); 4. 증가 시킨 인덱스 번호로 알파벳 배열에서 결과로 넣어준다. for(l.. [프로그래머스] x만큼 간격이 있는 n개의 숫자 - 자바스크립트 문제 설명 문제 풀이 function solution(x, n) { let answer = []; for(let i = 1; i [프로그래머스] 핸드폰 번호 가리기 - 자바스크립트 문제 설명 문제 풀이 function solution(phone_number) { let star = ''; let realNum = phone_number.slice(phone_number.length - 4); for(let i = 0; i [프로그래머스] 하샤드 수 - 자바스크립트 문제 설명 문제 풀이 function solution(x) { let answer = true; let sum = 0; let strX = x.toString(); for(let i = 0; i [프로그래머스] 평균 구하기 - 자바스크립트 문제 설명 문제 풀이 function solution(arr) { let answer = 0; for(let i = 0; i (a + b)) / arr.length; } 실행 결과 코드 채점하고 제출 [프로그래머스] 제일 작은 수 제거하기 - 자바스크립트 문제 설명 문제 풀이 function solution(arr) { arr.splice(arr.indexOf(Math.min.apply(null, arr)), 1); if(arr.length === 0) { arr.push(-1) } return arr; } splice(first index, 갯수)를 이용해 arr의 최소 값 인덱스부터 하나의 요소만 제거한다. splice메서드는 원본도 훼손된다. 실행 결과 코드 채점하고 제출 [프로그래머스] 문자열 내 p와 y의 개수 - 자바스크립트 문제 설명 문제 풀이 function solution(s) { let p = s.toLowerCase().split('p').length; // p문자열을 ''로 반환해준다. let y = s.toLowerCase().split('y').length; // y문자열을 ''로 반환해준다. return p === y ? true : false; } 위 코드는 처음 문제를 풀었을 때 작성한 코드이다. split('string')을 쓰면 원하는 string의 문자는 사라진다. 그래서 그 것의 길이를 비교하면 된다고 판단했다. 아래 코드는 위 코드를 한 줄로 코드를 만들어 보았다. function solution(s) { return s.toLowerCase().split('p').length === s.toLo.. [프로그래머스] 문자열 내 마음대로 정렬하기 - 자바스크립트 문제 설명 문제 풀이 function solution(strings, n) { return strings.sort((a, b) => a[n] === b[n] ? a.localeCompare(b) : a[n].localeCompare(b[n])); } string메서드 중 하나인 localeCompare를 array 정렬 메서드인 sort메서드에 넣어서 문제를 풀었다. localeCompare메서드는 문자열과 문자열을 비교하는데 사용된다. 아래에 예제를 하나 들어보곘다. 'a'.localeCompare('b'); // -1 'b'.localeCompare('a'); // 1 'b'.localeCompare('b'); // 0 'a'.localeCompare('a'); // 0 이런 식으로 -1, 0, 1을.. [프로그래머스] 두 정수 사이의 합 - 자바스크립트 문제 설명 문제 풀이 function solution(a, b) { const number = []; for(let i = -10000000; i { return prev + curr; }, 0); } } 이번 문제는 하드코딩처럼 짜 봤다. 제한 조건은 딱히 상관없는 것이었지만 그것들을 의식한다는 느낌으로 짜 봤다. 사실 연습문제를 거의 처음 풀어봤을 때 코딩한 것이라 하드코딩이 되었다. 또한 reduce메서드를 써보고 싶었다. 아래 코드는 다른 방식의 풀이 법이다. 훨씬 코드도 간단하고 보기 쉬운 것같다. function adder(a, b, c = 0){ for (let i = Math.min(a, b); i [프로그래머스] 나누어 떨어지는 숫자 배열 - 자바스크립트 문제 설명 문제 풀이 function solution(arr, divisor) { let answer = []; for(let i = 0; i (a - b)); }; 이번 문제는 생각하기 비교적 쉽다. 실행 결과 코드 채점하고 제출 [프로그래머스] 같은 숫자는 싫어 - 자바스크립트 문제 설명 문제 풀이 function solution(arr) { return arr.filter((x, i) => x !== arr[i + 1]); }; filter메서드를 통해 arr안에 있는 x가 x다음 번 요소와 같지 않은 것들을 반환하는 알고리즘을 만들었다. 실행 결과 코드 채점하고 제출 [JavaScript] Stack(스택) 자바스크립트에서는 배열 메서드가 정의가 되어 있어 딱히 구현한 필요는 없지만 c언어 같은 로우레벨의 언어에서는 함수들을 정의해줘야 스택의 개념을 쓸 수 있다. 비록 자바스크립트이지만 자료구조의 이해를 위해 해당 개념을 직접 구현해 보려고한다. Stack의 개념 스택은 LIFO(Last In First Out)의 특징을 가지고 있다. 즉, 아래 그림과 같이 맨 마지막으로 들어갈 f가 제일 처음 꺼내어 진다는 이야기이다. 스택의 최대 단점으로는 제일 먼저 들어간 데이터를 꺼낼 때 모든 데이터를 연산해야한다는 것이다. 데이터 a를 빼내고 싶다면 f, e, d, c, b를 차례대로 꺼낸 후 a를 꺼내고 다시 b, c, d, e, f 순으로 집어 넣어야 한다. Stack 구현 1. stack이라는 class만들어.. 이전 1 2 다음