[자바스크립트/알고리즘] LeetCode - 회문 정수
알고리즘/LeetCode 2021. 3. 7. 23:05

[문제] 9. Palindrome Number Given an integer x, return true if x is palindrome integer. An integer is a palindrome when it reads the same backward as forward. For example, 121 is palindrome while 123 is not. [예시] Input Output 121 true -121 false 10 false -101 false [풀이] 프리코드캠프에서 풀었던 회문 문제와 거의 동일하다. [자바스크립트/알고리즘] 회문(Palindrome) 검사 문제 주어진 문자열이 회문이면 true를 반환, 아니면 false를 반환하다. 영숫자가 아닌 문자들(non-alphanum..

[자바스크립트/알고리즘] LeetCode - 정렬된 두 리스트 합치기
알고리즘/LeetCode 2021. 3. 7. 22:57

[문제] 21. Merge Two Sorted Lists Merge two sorted linked lists and return it as a sorted list. The list should be made by splicing together the nodes of the first two lists. [예시] Input Output l1 = [1,2,4], l2 = [1,3,4] [1,1,2,3,4,4] l1 = [], l2 = [] [] l1 = [], l2 = [0] [0] [풀이] /** * Definition for singly-linked list. * function ListNode(val, next) { * this.val = (val===undefined ? 0 : val) * th..

[자바스크립트/알고리즘] 휴대폰 번호 검증 (정규식)
알고리즘/FreeCodeCamp 2021. 2. 4. 13:14

문제 미국 휴대폰 번호가 유효하다면 true, 유효하지 않다면 false를 리턴하라 사용자는 유효한 미국 번호의 형식이 있는 한 원하는 방식으로 양식 필드를 작성할 수 있다. 국가 코드가 제공된 경우 국가 코드가 1인지 확인해야 한다. 다음은 미국 번호에 대한 유효한 형식의 예시이다. 555-555-5555 (555)555-5555 (555) 555-5555 555 555 5555 5555555555 1 555 555 5555 나의 풀이 function telephoneCheck(str) { let regex = /^(1\s?)?(\(\d{3}\)|\d{3})[\s\-]?\d{3}[\s\-]?\d{4}$/ return regex.test(str); } 정규식을 사용하여 풀었다. 사실 정규식말고 해결방법이..

[자바스크립트/알고리즘] 회문(Palindrome) 검사
알고리즘/FreeCodeCamp 2021. 2. 4. 10:58

문제 주어진 문자열이 회문이면 true를 반환, 아니면 false를 반환하다. 영숫자가 아닌 문자들(non-alphanumeric characters)은 제거되어야 한다. 대소문자 구분도 없어야 한다. 나의 풀이 function palindrome(str) { let alphanumeric = /[a-z]|[0-9]/gi; str = str.match(alphanumeric); for(let i = 0; i < str.length; i++){ //소문자 변경 if(str[i].toUpperCase()) str[i] = str[i].toLowerCase(); } let cnt = 0; if(str.length % 2 === 1){ //str의 길이가 홀수일 때 for(let i = 0; i < str.le..

[자바스크립트/알고리즘] 2진수 문자열을 영어로 변환
알고리즘/FreeCodeCamp 2021. 2. 3. 20:45

문제 주어진 2진수 문자열을 영어로 변환하여라. 예시 binaryAgent("01000001 01110010 01100101 01101110 00100111 01110100 00100000 01100010 01101111 01101110 01100110 01101001 01110010 01100101 01110011 00100000 01100110 01110101 01101110 00100001 00111111") Aren't bonfires fun!? binaryAgent("01001001 00100000 01101100 01101111 01110110 01100101 00100000 01000110 01110010 01100101 01100101 01000011 01101111 01100100 011..

[자바스크립트/알고리즘] flat 함수 대안
알고리즘/FreeCodeCamp 2021. 2. 3. 20:01

flat() 함수란? [자바스크립트] flat() 함수-중첩된 배열 구조 하나로 합치기 정의 flat() 메서드는 모든 하위 배열 요소를 지정한 깊이까지 재귀적으로 이어붙인 새로운 배열을 생성합니다. 구문 const newArr = arr.flat([depth]) 예시 const arr1 = [1, 2, [3, 4]]; arr1.flat(); // [1, 2.. breathtaking-life.tistory.com 지난번 flat() 함수를 이용하면 중첩된 배열 구조를 하나로 바꿀 수 있다고 하였다. 이번 문제는 flat함수를 사용하지 않고 대안을 만들어야 한다. 문제 중첩된 배열을 평평하게(flatten) 만들어라. steamrollArray([[["a"]], [["b"]]]) ["a", "b"] st..

[자바스크립트/알고리즘] 프리코드캠프(FCC) - Drop it : 함수가 true일 때 까지 요소 제거 (shift)
알고리즘/FreeCodeCamp 2021. 2. 2. 14:10

문제 배열이 주어지면 첫 번째 요소(0 인덱스)에서 시작하여 함수가 true로 돌아올 때까지 각 요소를 반복하고 제거합니다. 그런 다음 조건이 충족되면 나머지 배열을 반환합니다. 그렇지 않으면 arr을 빈 배열로 반환해야 합니다. 예시 dropElements([1, 2, 3, 4], function(n) {return n >= 3;}) [3, 4] dropElements([0, 1, 0, 1], function(n) {return n === 1;}) [1, 0, 1] dropElements([1, 2, 3], function(n) {return n > 0;}) [1, 2, 3] dropElements([1, 2, 3, 4], function(n) {return n > 5;}) [] 여기서 주의해야 할 점..

[자바스크립트/알고리즘] 배열 여러개를 합친 후 유일한 값 반환하기 (set 객체, flat 함수)
알고리즘/FreeCodeCamp 2021. 2. 1. 22:03

문제 둘 이상의 배열이 제공되고, 원래 제공된 배열의 순서대로 중복이 없는 새로운 배열을 반환하라. 나의 풀이 Set 객체와 flat() 함수를 이용하여 정말 간단하게 코드를 짤 수 있다. function uniteUnique(...arr) { return [...new Set(arr.flat())]; } uniteUnique([1, 3, 2], [5, 2, 1, 4], [2, 1]); //실행코드 flat()으로 중첩된 배열을 하나로 합친 뒤 Set 객체로 중복된 값을 제거해 주었다. 중복된 값 제거에는 Set 객체를 사용하면 정말 편하다!! flat() 함수에 관한 포스트다. [자바스크립트] flat() 함수-중첩된 배열 구조 하나로 합치기 정의 flat() 메서드는 모든 하위 배열 요소를 지정한 깊..

[자바스크립트/알고리즘] DNA 페어링
알고리즘/FreeCodeCamp 2021. 2. 1. 14:56

DNA Pairing이란? DNA 가닥에 페어링 요소가 없다면 각 문자를 가져와서 쌍을 만들고 배열로 반환한다. 즉, 누락된 요소를 제공된 문자와 일치시킨다. 기본 쌍(Base Pairs)은 AT와 CG의 쌍이다. 예시 GCG는 [["G", "C"], ["C","G"],["G", "C"]] 를 반환한다. ATCGA는 [["A","T"],["T","A"],["C","G"],["G","C"],["A","T"]] 를 반환한다. 나의 풀이 function pairElement(str) { let answer = []; str.split("").map(e => { switch(e){ case 'G' : answer.push([e, 'C']); break; case 'C' : answer.push([e, 'G'])..

[자바스크립트/알고리즘] Pig Latin (정규식)
알고리즘/FreeCodeCamp 2021. 2. 1. 14:08

피그 라틴 어린이들의 말장난의 일종으로, boy를 oybay라 하는 것과 같이 맨 앞자음을 어미로 돌리고 그 뒤에 ay를 붙이는 것처럼 하는 말장난이다. 출처 : ko.wikipedia.org/wiki/%ED%94%BC%EA%B7%B8_%EB%9D%BC%ED%8B%B4 피그 라틴의 규칙은 이러하다. -단어가 모음으로 시작되면 끝에 'way'를 더한다. -단어가 자음으로 시작되면, 첫 번째 자음 또는 자음 군집(cluster)을 단어의 끝으로 이동한 후 "ay"를 추가한다. 예시 california -> aliforniacay bagel" = "agelbay" "fail" = "ailfay" "poo" = "oopay" algorithm -> algorithmay eight -> eightway 나의 풀이..