[자바스크립트/알고리즘] 휴대폰 번호 검증 (정규식)
알고리즘/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 나의 풀이..

[자바스크립트/알고리즘] 공백을 붙임표(하이픈)로 바꾸기 (정규식)
알고리즘/FreeCodeCamp 2021. 1. 19. 11:59

입력할 때 단어의 앞글자는 대문자로 시작, 나머지는 소문자. 출력은 모두 소문자로 변경되어야 함 입력: iLikeApples or 입력: i_Like_Apples (두 가지 입력 모두 출력 같음) 출력: i-like-apples function spinalCase(str) { return str.replace(/([a-z])([A-Z])/g, "$1 $2").toLowerCase().replace(/\s|_/g,"-"); } spinalCase("iLikeApples"); [코드 설명] str.replace(/([a-z])([A-Z])/g, "$1 $2") : 소문자 다음에 대문자가 오는 경우 그 사이(소문자와 대문자 사이)에 공백을 추가한다. .toLowerCase() : 소문자로 바꾼다. .repla..

[자바스크립트/알고리즘] 특정 문자열로 끝나는지 확인 / 정규식, endsWith() 이용
알고리즘/FreeCodeCamp 2021. 1. 18. 23:07

문제 특정 문자열로 끝나면 true, 아니면 false 반환 나의 풀이 입력: "dogs, cats, and ducks", "ducks" 결과: true function confirmEnding(str, target) { let result = new RegExp(target+"$","i"); return result.test(str); } confirmEnding("dogs, cats, and ducks", "ducks"); 간단하게 endsWith()로 문제를 해결할 수도 있다. [endsWith()] 입력과 결과는 위와 동일하다. 사용방법 function confirmEnding(str, target) { return str.endsWith(target); } (문제 출처:www.freecodeca..