Level 0) 문자열, 배열, 조건문

Doozuu·2023년 1월 19일
0

프로그래머스 (JS)

목록 보기
20/183

📌 문제 1. 7의 개수

문제설명

머쓱이는 행운의 숫자 7을 가장 좋아합니다. 정수 배열 array가 매개변수로 주어질 때, 7이 총 몇 개 있는지 return 하도록 solution 함수를 완성해보세요.

풀이

  1. 문자열로 바꿔서 푸는 방법과 2. 배열 상태로 푸는 방법을 각각 생각해보았다.

첫 번째로 생각한 풀이 방법은 배열을 문자열로 바꾼 다음에 for of 반복문으로 7의 개수를 카운팅하는 것이다.

function solution(array) {
    let answer = 0;
    for(let el of array.join('')){
        el === '7' ? answer++ : 0
    }
    return answer;
}

두 번째로 생각한 방법은 문자열로 바꾸지 않고 배열 상태에서 filter()를 이용해 7만 남기는 것이다.
(숫자를 하나씩 쪼개기 위해 join()했다가 다시 split()해야 하는 번거로움이 있긴 하지만 코드는 더 짧다.)

function solution(array) {   
    return array.join('').split('').filter(el => el == '7').length
}

참고

문자열로 바꿔서 푸는 방법중 split()을 이용한 풀이 방법도 있다.
'7'을 기준으로 split해주면 7에 해당하는 것은 ""로 바뀌고, 7이 아닌 것은 하나로 합쳐진다. 따라서 배열 길이에 -1을 해주면 개수를 구할 수 있다.
ex)
[7, 77, 17] -> ["","","","1",""]
ex)
[10, 29] -> ["1029"]

function solution(array) {
    return array.join('').split('7').length-1;
}



📌 문제 2. 잘라서 배열로 저장하기

문제설명

문자열 my_str과 n이 매개변수로 주어질 때, my_str을 길이 n씩 잘라서 저장한 배열을 return하도록 solution 함수를 완성해주세요.

풀이

반복문과 slice()를 이용해 문자열을 n씩 잘라서 빈 배열에 담아준다.

function solution(my_str, n) {
    var answer = [];
    for(let i=0;i<my_str.length;i+=n){
        answer.push(my_str.slice(i,i+n))
    }
    return answer;
}



📌 문제 3. 중복된 숫자 개수

문제설명

정수가 담긴 배열 array와 정수 n이 매개변수로 주어질 때, array에 n이 몇 개 있는 지를 return 하도록 solution 함수를 완성해보세요.

❌ 중간에 생겼던 오류

array = [1, 1, 2, 3, 4, 5]  
n = 1	

for(i of array){
array.includes(n) ? answer+=1 : answer+=0;
}

오류 : 2가 나와야 하는데 자꾸 6이 출력됨.

👉🏻 1을 포함하고 있으니까 answer에 1이 추가되고, 이 시행이 6번 반복되므로 6이 나왔던것! (배열 전체에서의 포함여부만 확인하고, 배열에 있는 원소 하나하나와 비교하지 못함.)
👉🏻 includes 대신 비교연산자를 사용해서 해결된듯 하였으나 틀림!

틀린 코드

function solution(array, n) {
    var answer = 0;
    for(i of array){
       array[i] == n ? answer+=1 : answer+=0;
    }
    return answer;
}

💡for(i of array)를 index로 접근하려고 해서 문제가 발생한 것!

👉🏻 for(element of array)는 index가 아닌 element에 접근하는 명령문!
👉🏻 i가 element를 가리키므로 array[i] == n 이 아닌 i == n 으로 해주면 됨.

수정한 코드

function solution(array, n) {
    var answer = 0;
     for(i of array){
       i == n ? answer++ : 0;
    }
    return answer;
}

⭐️ 배열 안에 요소가 있는지 확인하는법

.indexOf(element, index)

해당 요소의 index 반환함.

.includes(keyword)

T/F 반환함.

.find(keyword)

함수(주로 화살표 함수)를 입력 매개 변수로 사용. 해당 요소의 값을 반환함.

.filter(keyword)

배열을 반환함.

for(element of array)

배열 안의 element들을 하나하나 순회함.(주의 : index 아님!)



📌 문제 4. 머쓱이보다 키 큰 사람

문제설명

머쓱이는 학교에서 키 순으로 줄을 설 때 몇 번째로 서야 하는지 궁금해졌습니다. 머쓱이네 반 친구들의 키가 담긴 정수 배열 array와 머쓱이의 키 height가 매개변수로 주어질 때, 머쓱이보다 키 큰 사람 수를 return 하도록 solution 함수를 완성해보세요.

풀이

map( )을 이용해 배열을 하나씩 돌면서 주어진 값보다 크면 갯수를 하나씩 추가해준다.

function solution(array, height) {
    var answer = 0;
    array.map((h) => h > height ? answer++ : 0);
    return answer;
}

참고

filter( )를 이용해 배열에서 조건에 해당하는 수만 남기고, 갯수를 구해주는 풀이.

function solution(array, height) {
    var answer = array.filter(item => item > height);
    return answer.length;
}
profile
모든게 새롭고 재밌는 프론트엔드 새싹

0개의 댓글