#6 코딩테스트 [룩업 테이블, 정규표현식, 각 자릿수 더하기]

2023. 10. 31. 22:51·⚡ 코딩테스트 ⚡/JavaScript

1. 룩업 테이블

입력에 따른 결과를 정해둘 때 사용

// 가위바위보 예제
// 1 = 가위, 2 = 바위, 3 = 보

function solution(a, b) {
    let answer = "";
    let lookupTable = {
        "1-3": "A ",
        "2-1": "A ",
        "3-2": "A "
    };

    for (let i = 0; i < a.length; i++) {
        let key = `${a[i]}-${b[i]}`;
        if (a[i] === b[i]) answer += "D ";
        else answer += lookupTable[key] ? lookupTable[key] : "B ";
    }

    return answer;
}

let c=[2, 3, 3, 1, 3];
let d=[1, 1, 2, 2, 3];
console.log(solution(c,d));

 

2. 정규표현식

문자열에서 조건에 맞는 문자인지 확인

https://developer.mozilla.org/ko/docs/Web/JavaScript/Guide/Regular_expressions

 

정규 표현식 - JavaScript | MDN

정규 표현식, 또는 정규식은 문자열에서 특정 문자 조합을 찾기 위한 패턴입니다. JavaScript에서는 정규 표현식도 객체로서, RegExp의 exec() (en-US)와 test() 메서드를 사용할 수 있습니다. String의 match()

developer.mozilla.org

/hello/ = hello
/[a-z]/ = 소문자 알파벳
/ab+c/ = a 다음에 b가 하나 이상, 그리고 c
/^a/ = a로 시작
/a$/ = a로 끝
/[a-z]/i = 대소문자 구분 없이
/[a-z]/g = 전역 검색
/[a-z]/ig = 대소문자 구분 없이 전역 검색
/[^a-z]/ = 소문자가 아닌 다른 문자
function solution(s){
    return s.replaceAll(/[^a-z]/gi,'').toLowerCase()===s.replaceAll(/[^a-z]/gi,'').toLowerCase().split('').reverse().join('') ? 'YES' : 'NO'
}

let str="found7, time: study; Yduts; emit, 7Dnuof";
console.log(solution(str));

 

3. 각 자릿수 더하기

숫자를 문자형으로 변형 후 split 한 뒤 숫자로 더하는 것보다 while문을 사용해 n%10 나머지를 더하는 것이 좋다.

function solution(n, arr) {
    let result = 0;
    for (let i = 0; i < n; i++) {
        let num = arr[i];
        let sum = 0;
        while (num > 0) {
            sum += num % 10;
            num = Math.floor(num / 10);
        }
        result = Math.max(result, sum);
    }
    return result;
}


function solution(n, arr){
    let answer, max=Number.MIN_SAFE_INTEGER;
    for(let x of arr){
        let sum=0, tmp=x;
        while(tmp){
            sum+=(tmp%10);
            tmp=Math.floor(tmp/10);
        }
        if(sum>max){
            max=sum;
            answer=x;
        }
        else if(sum===max){
            if(x>answer) answer=x;
        }
    }
    return answer;
}
'⚡ 코딩테스트 ⚡/JavaScript' 카테고리의 다른 글
  • #8 코딩테스트 [선택정렬, 버블정렬, 삽입정렬]
  • #7 코딩테스트 [소수 판별, 객체 정렬, Hash/객체]
  • #5 코딩테스트 [깊은 복사, .splice, break, for...of, 대/소문자 판별(ASKII)]
  • #4 코딩테스트 [.findIndex, +, .filter, set]
Yeonhub
Yeonhub
✨ https://github.com/yeonhub 📧 lsy3237@gmail.com
  • Yeonhub
    비 전공자의 Be developer
    Yeonhub
  • 전체
    오늘
    어제
    • 전체보기 (169)
      • 🔍 Tech 🔍 (19)
        • Front-End (11)
        • Back-End (4)
        • AI (1)
        • Server (1)
        • Etc (2)
      • 💡 원티드 프리온보딩 챌린지 💡 (14)
        • PRE-ONBOARDING_AI (11월) (1)
        • PRE-ONBOARDING_FE (2월) (2)
        • PRE-ONBOARDING_FE (1월) (2)
        • PRE-ONBOARDING_FE (12월) (9)
      • 🔥 부트캠프-웹 개발 🔥 (118)
        • HTML5 (7)
        • CSS3 (21)
        • JavaScript (27)
        • JavaScript_advanced (9)
        • React (24)
        • Next (1)
        • MYSql (5)
        • Node (5)
        • 오늘하날(개인프로젝트) (12)
        • 이젠제주투어(팀프로젝트) (7)
      • 💻 CS 💻 (1)
        • 알고리즘 (1)
      • ⚡ 코딩테스트 ⚡ (11)
        • JavaScript (11)
      • 📚 Books 📚 (6)
        • 클린 아키텍처 (2)
        • 인사이드 자바스크립트 (4)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • Github
  • 공지사항

  • 인기 글

  • 태그

    rn admob
    expo map
    expo node fcm
    expo fcm push
    expo 지도
    expo deep linking
    node crontab
    Node
    라스콘4
    react native firebase analytics
    expo fcm
    php node
    react native bottom sheet
    expo admob
    python node
    expo 길찾기
    react native expo fcm
    node.js fcm
    node fcm
    react native analytics
    expo google map
    javascript fcm
    라스콘
    프론트엔드 테스트코드
    node cron
    rn bottom sheet
    react vite
    react native admob
    컴파운드 컴포넌트 패턴
    bottom sheet
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
Yeonhub
#6 코딩테스트 [룩업 테이블, 정규표현식, 각 자릿수 더하기]
상단으로

티스토리툴바