Front-End

프로그래머스 기초트레이닝 14일차 본문

알고리즘

프로그래머스 기초트레이닝 14일차

jeongsso 2023. 9. 9. 20:13

 

 

문제 70.  x-사이의 개수


문제 설명

문자열 myString이 주어집니다. 

myString을 문자 "x"를 기준으로 나눴을 때 

나눠진 문자열 각각의 길이를 순서대로 저장한 배열을 return 하는 solution 함수를 완성해 주세요.

입출력 예

myString result
"oxooxoxxox" [1, 2, 1, 0, 1, 0]
"xabcxdefxghi" [0, 3, 3, 3]

 

 

입출력 예 설명

"x"를 기준으로 문자열을 나누면 ["o", "oo", "o", "", "o", ""]가 됩니다. 각각의 길이로 배열을 만들면 [1, 2, 1, 0, 1, 0]입니다. 따라서 [1, 2, 1, 0, 1, 0]을 return 합니다.

"x"를 기준으로 문자열을 나누면 ["", "abc", "def", "ghi"]가 됩니다. 각각의 길이로 배열을 만들면 [0, 3, 3, 3]입니다. 따라서 [0, 3, 3, 3]을 return 합니다.

 

 

저의 풀이!

function solution(myString) {
    return myString.split('x').map(a => a.length);
}

console.log(solution('oxooxoxxox'));

 

 

메모

split() 문자열을 일정한 구분자로 잘라서 배열로 저장해주는 함수다.
'x' 로 구분자로 정해서 배열로 나눈 후 map 을 이용해서 length 값을 구하면된다.

 

 

 

문제 71.  가까운 1 찾기


문제 설명

정수 배열 arr가 주어집니다. 

이때 arr의 원소는 1 또는 0입니다.

정수 idx가 주어졌을 때,

idx보다 크면서 배열의 값이 1인 가장 작은 인덱스를 찾아서 반환하는 solution 함수를 완성해 주세요.

단, 만약 그러한 인덱스가 없다면 -1을 반환합니다.



입출력 예

arr idx result
[0, 0, 0, 1] 1 3
[1, 0, 0, 1, 0, 0] 4 -1
[1, 1, 1, 1, 0] 3 3

 

 

입출력 예 설명

1보다 크면서 원소가 1인 가장 작은 인덱스는 3입니다. 따라서 3을 return 합니다.

4번 인덱스 이후에 1은 등장하지 않습니다. 따라서 -1을 return 합니다.

3번 인덱스의 값이 1입니다. 따라서 3을 return 합니다.

 

저의 풀이!

function solution(arr, idx) {
    return arr.indexOf(1, idx);
}

console.log(solution([1, 1, 1, 1, 0], 3));

 

 

메모

indexOf 인자 중 두번째 인자로 시작점을 정할 수 있다.
시작점을 idx로 하면서 0번째 인덱스가 1이라면 전체의 인덱스 숫자를 내보내준다.

 

아니면 그냥 for문과 조건문으로도 가능하다.

function solution1(arr, idx) {
    for (let i = idx; i < arr.length; i++) {
        if (arr[i] === 1) {
            return i;
        }
    }
    return -1;
}
console.log(solution1([1, 1, 1, 1, 0], 3));

조건이 true 일때 i 를 내보내고 아니면 -1을 내보내게끔 코드를 작성했다.

 

 

 

문제 72.  문자열 잘라서 정렬하기


문제 설명

문자열 myString이 주어집니다. 

"x"를 기준으로 해당 문자열을 잘라내 배열을 만든 후 사전순으로 정렬한 배열을 return 하는 solution 함수를 완성해 주세요.

단, 빈 문자열은 반환할 배열에 넣지 않습니다.

 

입출력 예

myString result
"axbxcxdx" ["a","b","c","d"]
"dxccxbbbxaaaa" ["aaaa","bbb","cc","d"]

 

 

입출력 예 설명

myString을 "x"를 기준으로 자른 배열은 ["a","b","c","d"]이며, 이 배열은 이미 사전순으로 정렬된 상태입니다. 

따라서 해당 배열을 return 합니다.

myString을 "x"를 기준으로 자른 배열은 ["d","cc","bbb","aaaa"]이며, 이 배열을 사전순으로 정렬하면 ["aaaa","bbb","cc","d"]입니다. 따라서 해당 배열을 return 합니다.

 

 

저의 풀이!

function solution(myString) {
    return myString
        .split('x')
        .filter(item => item !== '')
        .sort();
}

console.log(solution('dxccxbbbxaaaa'));

 

 

메모

split() 문자열을 일정한 구분자로 잘라서 배열로 저장해주는 함수다.
그리고 filter로 빈 문자열을 제거한후 사전순으로 정렬하기 위해 sort() 함수를 사용한다

 

 

Comments