개발조각

[알고리즘 풀이_Lv0] 문자열 뒤집기, 특정 문자 제거하기, 배열의 유사도, 가위 바위 보 본문

알고리즘🅰/제주코딩베이스캠프 프로그래머스 문제 풀이

[알고리즘 풀이_Lv0] 문자열 뒤집기, 특정 문자 제거하기, 배열의 유사도, 가위 바위 보

개발조각 2023. 3. 10. 16:03
728x90
반응형

*제주코딩베이스캠프의 JavaScript 알고리즘 100일 챌린지를 참고로 정리하고 있습니다.*

 

문자열 뒤집기

문제


https://school.programmers.co.kr/learn/courses/30/lessons/120822

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

문자열 my_string이 매개변수로 주어집니다. my_string을 거꾸로 뒤집은 문자열을 return하도록 solution 함수를 완성해주세요.

 

소스코드


Array.from()

// 방법1
function solution(my_string) {
    return Array.from(my_string).reverse().join('');
}

 

split()

// 방법2
function solution(my_string) {
    return my_string.split('').reverse().join('');
}

 

https://www.youtube.com/watch?v=C72HFa51ZM0&list=PLkfUwwo13dlWZxOdbvMhkzhAowaiEjuGS&index=12 


특정 문자 제거하기

문제


https://school.programmers.co.kr/learn/courses/30/lessons/120826

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

문자열 my_string과 문자 letter이 매개변수로 주어집니다. 

my_string에서 letter를 제거한 문자열을 return하도록 solution 함수를 완성해주세요.

 

 

소스코드


// 방법1
function solution(my_string, letter) {
    return my_string.replaceAll(letter, '');
}

 

정규식으로 풀어보기

// 방법2
function solution(my_string, letter) {
    let reg = new RegExp(letter, 'g') // 'g': 전역에서 검사
    return my_string.replace(reg, '')
}

 

 

아래와 같이 쓸 수 없는 잆는 이유는 정규식 표현 안에 변수를 집어 넣을 수가 없습니다.

그래서 변수를 써서 구해야 됩니다.

my_string.replace(/letter/g, '') // X

 

"BCBdbe".replace(/B/g, '') // 'Cdbe'
  • /[1-9]/g : 1~9
  • /[a-z]/g : a~z
  • /[A-Z]/g : A~Z

https://www.youtube.com/watch?v=oBvYJJySXk4&list=PLkfUwwo13dlWZxOdbvMhkzhAowaiEjuGS&index=13 


배열의 유사도

문제


https://school.programmers.co.kr/learn/courses/30/lessons/120903

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

두 배열이 얼마나 유사한지 확인해보려고 합니다. 

문자열 배열 s1과 s2가 주어질 때 같은 원소의 개수를 return하도록 solution 함수를 완성해주세요.

  • 1 ≤ s1, s2의 길이 ≤ 100
  • 1 ≤ s1, s2의 원소의 길이 ≤ 10
  • s1과 s2의 원소는 알파벳 소문자로만 이루어져 있습니다
  • s1과 s2는 각각 중복된 원소를 갖지 않습니다.

 

소스코드


s1의 원소가 s2에 포함되어 있으면 filter해주고 배열의 길이를 리턴

// 방법1
function solution(s1, s2) {
    return s1.filter(v => s2.includes(v)).length;
}

 

교집합으로 구하기 (s1⋂s2)

// 방법2
function solution(s1, s2) {
    return s1.length + s2.length - new Set([...s1, ...s2]).size
}

// s1 = [a, b, c] s2 = [com, b, d, p, c]
// s1.length + s2.length = 8
// new Set([...s1, ...s2]) = [a, b, c, com, d, p]
// new Set([...s1, ...s2]).size = 6
// 8 - 6 = 2

Set은 중복제거

 

https://www.youtube.com/watch?v=CS9BgWNE_mM 


가위 바위 보

문제


https://school.programmers.co.kr/learn/courses/30/lessons/120839

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

가위는 2 바위는 0 보는 5로 표현합니다. 

가위 바위 보를 내는 순서대로 나타낸 문자열 rsp가 매개변수로 주어질 때, 

rsp에 저장된 가위 바위 보를 모두 이기는 경우를 순서대로 나타낸 문자열을 return하도록 solution 함수를 완성해보세요.

 

소스코드


깡으로 if문으로 풀기

// 방법1
function solution(rsp) {
    var answer = '';
    for(let i of rsp){
        if(i === '0'){
            answer += '5'
        }else if(i === '2'){
            answer += '0'
        }else if(i === '5'){
            answer += '2'
        }
    }
    return answer;
}

 

object, map을 이용하여 풀기

// 방법2
function solution(rsp) {
    let answer = {'0':'5', '2':'0', '5':'2'};
    return [...rsp].map(v=>answer[v]).join('');
}

// rsp문자열을 스프레드로 펼쳐서 배열로 만들어준다.
// map으로 해당 원소를 순회한다.
// 순회하면서 answer[해당원소]를 해주어 0->5, 2->0, 5->2으로 교체해준다.
// join으로 배열을 문자열로 바꾸어준다.

 

 

https://www.youtube.com/watch?v=JVy72QeE0YA 

728x90
반응형
Comments