반응형
가장 짧은 문자거리
주어진 단어를 하나씩 돌면서, 타겟한 문자와 최소 거리를 리턴
function solution(str, tar) {
let answer;
// code here;
return answer;
}
let example = "happyecodinge";
let target = 'e';
console.log(solution(example, target))
//[5, 4, 3, 2, 1, 0, 1, 2, 3, 3, 2, 1, 0]
답) indexOf 를 이용하여 해당 문자의 앞뒤로 존재하는 타겟 문자와의 거리의 최소 값을 구한다.
function solution(str, tar) {
let answer = [];
let front = back = 0;
for(let i = 0; i < str.length; i++) {
front = str.indexOf(tar, front);
back = str.indexOf(tar, front+1);
let disFront = Math.abs(front - i);
let disBack = Math.abs(back - i);
if(disFront > disBack) {
front = back;
answer.push(disBack);
} else {
answer.push(disFront);
}
}
return answer;
}
답2) 왼쪽으로 e의 거리를 측정하고, 다시 오른쪽으로 돌면서 e와의 거리를 측정하며 최소값만 취한다.
function solution(str, tar) {
let answer = [];
let index = Number.MAX_SAFE_INTEGER;
//왼쪽으로 측정
for(let i = 0; i < str.length; i++) {
str[i] === tar ? index = 0: index++;
answer.push(index);
}
index = Number.MAX_SAFE_INTEGER;
//오른쪽으로 측정하며 e와의 거리 최소값만 취하기
for(let i = str.length - 1; i > - 1; i--) {
str[i] === tar ? index = 0: index++;
answer[i] = Math.min(answer[i], index);
}
return answer;
}
문자열 압축 1
반복되는 문자열의 수를 문자 옆에 기록해준다. 1번만 반복되는 경우는 반복횟수를 기록하지 않는다.
function solution(str) {
let answer;
// code here;
return answer;
}
let example = 'KKSSSKFFFKDDDDQD';
console.log(solution(example));//K4S3F3D5Q
답) split()
을 이용하여 반복횟수를 알아낸다.
function solution(str) {
let answer ='';
let arr = [];
for(let el of str) {
if(!arr.includes(el)) {
let index = str.split(el).length - 1;
index === 1 ? arr.push(el) : arr.push(el, index);
}
}
answer = arr.join('');
return answer;
}
문자열 압축 2
연속하는 문자열의 압축. 문자열과 반복횟수를 기재하며 반복횟수가 1번일 경우 기재하지 않는다.
function solution(str) {
let answer;
// code here;
return answer;
}
let example = 'KKHSSSSSSSE';
console.log(solution(example));//K2HS7E
답) 비교를 위해 마지막 문자에 빈 문자를 추가한다.
function solution(str) {
let answer = '';
let cnt = 1;
let newStr = str+ ' '; //마지막 문자때문
for(let i = 0; i < str.length; i++) {
if(newStr[i] === newStr[i+1]) cnt++;
else {
answer += newStr[i] + (index === 1? '' : index);
cnt = 1;
}
}
return answer;
}
반응형
'2. 우당탕탕 개발자 > 2-1. 공부기록' 카테고리의 다른 글
2021.8.6 TIL 졸업선물,k번째합,두 배열 합치기 (0) | 2021.08.07 |
---|---|
2021.8.4 TIL 자리수의 합, 뒤집은 소수, 멘토링 경우의 수 (0) | 2021.08.04 |
2021.8.2 TIL 회문문자열,팰린드롬,숫자추출 (0) | 2021.08.02 |
2021.7.31 TIL (격차판 최대합, 봉우리) (0) | 2021.07.31 |
2021.7.30 TIL (보이는 학생, 가위바위보, 점수구하기, 등수구하기) (0) | 2021.07.30 |
댓글