문자열 배열 자르기 (Day 9-10)
[프로그래머스] 일일 도전 과제 문제 풀이 정리입니다.
관련 개념도 첨부하였으니 필요한 분들은 참고하세요.
코딩 기초 트레이닝, 코딩테스트 입문 문제를 Day별로 풀고 정리한 내용입니다.
🌞
✨Day 9-10
오늘은 입문, 기초 난이도 비슷함
목표: 문자열과 배열을 잘라보자
-
forEach✨ 배열 순회 메서드 | 각 요소에 대해 부가적인 실행
array.map((v,idx)=> console.log(v)) -
map✨ 배열 순회 메서드 | 각 요소를 변환해서 새 배열 반환
array.map((v,idx)=> Number(v)) -
reduce✨ 배열 순회 메서드 | 하나의 누적된 값
array.reduce((acc,cur)=> acc + cur) -
filter✨✨ 배열 순회 메서드 | 조건을 통과한 요소만 새 배열 생성
array.filter((v,idx)=> v%2===0) -
2차원 배열 순회와 구조분해할당
-
substr(begin, 길이)🔄 문자열 자르기 | 일정 길이로 문자열 자르기 -
slice(begin, end)🔄 문자열/배열 자르기 | 새 문자열/배열 반환 -
splice(begin, end)❇️ 배열 요소 삭제/추가 | 원본 배열 변경
입문
개미군단
각 구간에 맞는 개미 수 return
function solution(hp) {
const left = hp%5;
const coef = Math.floor(hp/5);
if(left%3===0) return coef + left/3;
if(left%3===1) return coef-1 + (left+5)/3;
if(left%3===2) return coef-2 + (left+10)/3;
}
✨개선 코드
1이 있기 때문에 굳이 구간을 안 나눠도 hp%5값을 만들 수 있음
Math.floor소수점 버리기
function solution(hp) {
return Math.floor(hp/5) + Math.floor((hp%5)/3) + (hp%5)%3;
}
모스부호 1
문자열 letter를 공백기준으로 분리하고 배열 돌면서 v를 morse[v]로 변환
letter의 각 원소를 변환하기 때문에 map 사용
split()문자열 → 배열map배열 순회join()배열 → 문자열
function solution(letter) {
const morse = {
'.-':'a','-...':'b','-.-.':'c','-..':'d','.':'e','..-.':'f',
'--.':'g','....':'h','..':'i','.---':'j','-.-':'k','.-..':'l',
'--':'m','-.':'n','---':'o','.--.':'p','--.-':'q','.-.':'r',
'...':'s','-':'t','..-':'u','...-':'v','.--':'w','-..-':'x',
'-.--':'y','--..':'z'
};
return letter.split(' ').map(v => morse[v]).join('')
}
✨개선 코드
map+join()을reduce로 한번에
morse = {
'.-':'a','-...':'b','-.-.':'c','-..':'d','.':'e','..-.':'f',
'--.':'g','....':'h','..':'i','.---':'j','-.-':'k','.-..':'l',
'--':'m','-.':'n','---':'o','.--.':'p','--.-':'q','.-.':'r',
'...':'s','-':'t','..-':'u','...-':'v','.--':'w','-..-':'x',
'-.--':'y','--..':'z'
}
function solution(letter) {
return letter.split(' ').reduce((acc, cur) => acc + morse[cur], '')
}
가위바위보
rsp의 각 원소를 변환하기 때문에 map 사용
- 3항연산자
function solution(rsp) {
return [...rsp].map((v) => v==='2' ? '0' : v==='0' ? '5' : '2').join('')
}
✨개선 코드
객체키 값으로 대응하는 게 있으면 객체 사용map
function solution(rsp) {
let arr = {
2: 0,
0: 5,
5: 2
};
var answer = [...rsp].map(v => arr[v]).join("");
return answer;
}