[알고리즘 풀이_Lv0] 문자열 뒤집기, 특정 문자 제거하기, 배열의 유사도, 가위 바위 보
*제주코딩베이스캠프의 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