본문 바로가기
Record/TIL

TIL 20230315(온보딩 8일차)

by junhub 2023. 3. 16.

function solution(my_string) {
  var answer = '';
  let arrayMy = Array.from(my_string)
  let convert = [];
  for(i = 0; i < arrayMy.length; i++) {
    convert[i] = arrayMy[arrayMy.length - i - 1];
  }
  answer = convert.join('');
  return answer;
}


console.log(solution('jaron'))

console.log(solution('bread'))

Array.from 함수를 사용해 매개변수로 받은 my_string을 배열로 바꿔주고 for 반복문을 통해 다음과 같은 반복이 이루어진다.

 

0번째 반복 : convert[0] = arrayMy[4]   -> 0번째 반복은 i를 0으로 할당을 했고 0부터 반복이 이루어지기 때문에 이렇게 표현했음

1번째 반복 : convert[1] = arrayMy[3] 

2번째 반복 : convert[2] = arrayMy[2] 

3번째 반복 : convert[3] = arrayMy[1] 

4번째 반복 : convert[4] = arrayMy[0] 

 

이렇게 되면 각 배열이 바뀌게 되면서 순서가 거꾸로 뒤집히게 된다. 이때 데이터는 배열이기 때문에 join(' ') 메소드를 활용해서 배열을 문자열로 변환 후 return을 해준다. 

function solution(my_string) {
    var answer = [...my_string].reverse().join("");
    return answer;
}

위 코드는 [...my_string]으로 배열로 매개변수를 받은 후 reverse( ) 메소드를 통해 배열을 거꾸로 뒤집어주고 마지막에 join( ) 메소드로 문자열로 변환 후 리턴을 해준다.

const str = "apple banana orange";

const arr = str.split(" ");

console.log(arr)

> [ 'apple', 'banana', 'orange' ]

 

split(" ") 스플릿 메소드를 이와 같이 스페이스로 지정해서 사용하게 되면 문자열이 배열로 변환되게 된다. 


function solution(my_string, letter) {
  var answer = "";
  arraySol = Array.from(my_string);

  for (i = 0; i < arraySol.length; i++) {
    if (arraySol[i] === letter) {
      arraySol.splice(i, 1);
    }
  }
  answer = arraySol.join("");
  return answer;
}

console.log(solution('abcdef' , 'f'))
console.log(solution('BCBdbe' , 'B'))

반복문 내에 if 조건문을 사용하여 arraySol의 인덱스 0번째부터 돌면서 만약 매개변수 letter와 같은 글자가 있다면 splice(i, 1)을 사용해 

arraySol 배열의 인덱스 i 번째의 1개의 요소를 제거한다. 마지막으로 join("") 메소드를 이용해 문자열로 자료형을 바꿔준 후 리턴한다. 

function solution(my_string, letter) {
    const answer = my_string.split(letter).join('')
    return answer;
}

이와 같은 코드로도 실행이 가능하다. 해석을 해보면 split 함수를 사용해 letter 값을 my_string 문자열 내에서 없애주고 split 함수를 사용하면 split의 인자를 기준으로 분리를 한 후 배열로 반환이 되기 때문에 join 함수를 써서 문자열로 리턴을 해준다. 

 

[ 'abcde', '' ]
[ '', 'C', 'dbe' ]

만약 join 함수를 안쓰게 되면 이와 같이 출력이 된다. 따라서 join 함수를 이용해 합쳐서 문자열로 만들어줘야 하는 것이다.


function solution(my_string, n) {
  var answer = '';
  let arrayMy = Array.from(my_string);
  let multiplyArray = [];

  for(i = 0; i < arrayMy.length; i++) {
    for(j = 0; j < n; j++) {
      multiplyArray.push(arrayMy[i])
    }
  }
  answer = multiplyArray.join("");
  return answer;
}

console.log(solution('hello','n'))

이중 반복문을 사용했다. 내부 반복문에 매개 변수 n 만큼 반복하게 j < n 이라는 조건을 달아놓고 i 가 0일때 내부 반복문이 n 만큼 반복하게 만든 것이다. 

 

첫번째 반복 : i = 0 , j = 0,1,2 -> 세번 반복 -> 즉 arrayMy[0]이 multiplyArray에 push 함수로 3번 들어가게 됨 

두번째 반복 : i = 1 , j = 0,1,2 -> 세번 반복 -> arrayMy[1]이 multiplyArray에 push 함수로 3번 들어가게 됨 

세번째 반복 : i = 2 , j = 0,1,2, -> 세번 반복 -> arrayMy[2]이 multiplyArray에 push 함수로 3번 들어가게 됨 

네번째 반복 : i = 3 , j = 0,1,2, -> 세번 반복 -> arrayMy[3]이 multiplyArray에 push 함수로 3번 들어가게 됨 

다섯번째 반복 : i = 4 , j = 0,1,2, -> 세번 반복 -> arrayMy[4]이 multiplyArray에 push 함수로 3번 들어가게 됨 

 

이와 같은 순서로 글자가 하나하나씩 세번씩 반복해서 새로운 배열 multiplyArray에 들어가게 된다.

마지막으로 join함수를 이용해서 문자열로 리턴한다. 

function solution(my_string, n) {
    let ans = '';
    for (let s of my_string) ans+=s.repeat(n);
    return ans;
}

이 코드는 for of 반복문을 사용해서 my_string의 요소를 하나씩 꺼내 s에 할당하고 빈 공백을 할당한 ans 변수에 s를 계속 더해주는 것이다. 이때 repeat 함수를 사용했는데 repeat(n)은 n번만큼 반복해서 붙인 다음에 새로운 문자열로 반환하는 함수이다. 


function solution(message) {
    var answer = 0;
    let result = message.length
    let result1= result * 2
    
    return result1;
}



console.log(solution('happy birthday!'))
console.log(solution('I love you~'))

알아야 할 점은 length 메소드는 문자열 내의 공백도 카운트 한다는 점이다. 


function solution(my_string) {
    let answer = '';
    let convert =[]
    let arraySrting = Array.from(my_string)
    for(i = 0; i < my_string.length; i++){
        if(arraySrting[i] !== 'a' && 
        arraySrting[i] !== 'e' && 
        arraySrting[i] !== 'i' &&
        arraySrting[i] !== 'o' &&
        arraySrting[i] !== 'u') {
            convert.push(arraySrting[i])
        }
        
    }
    return convert.join("")
    
}

console.log(solution('bus'))
console.log(solution('nice to meet you'))

반복문 내에 if 조건문을 사용해 인덱스 0번째부터 my_string.length(배열의 끝까지)만큼 하나씩 모음 a , e , i, o , u 인지 검사하고 아니라면 빈 배열로 할당한 변수 convert에 push 메소드를 활용해 넣는 코드를 구성했다. 

마지막은 마찬가지로 배열을 문자열로 변환해주는 join 함수를 사용해 문자열로 리턴 했다. 

function solution(my_string) {
    var answer = my_string.split('');
    for(let i = 0; i < answer.length; i++){
        switch(answer[i]){
            case 'a':
            case 'e':
            case 'i':
            case 'o':
            case 'u':
                answer.splice(i, 1);
                i--;
                break;
        }
    }

    return answer.join('');
}

if 조건문 대신 switch 조건문을 사용한 코드이다. 이 코드에서는 split(' ') 을 사용해 배열로 만들어줬고 splice를 사용해 case에 해당하는 요소를 제거한다. 


function solution(str1, str2) {
    if(str1.includes(str2)){
        return 1
    }else{
        return 2
    }
}


console.log(solution("ab6CDE443fgh22iJKlmn1o","6CD"))
console.log(solution("ppprrrogrammers","pppp"))
console.log(solution("AbcAbcA","AAA"))

includes 내장 함수를 사용했는데 str1 안에 str2가 있으면 1을 return하게 된다. 

function solution(str1, str2) {
    return str1.split(str2).length > 1 ? 1 : 2
}

 

이러한 풀이 방법도 있는데 여기서 str1.split만 console을 찍어보면 

 

[ 'ab', 'E443fgh22iJKlmn1o' ]
[ 'ppprrrogrammers' ]
[ 'AbcAbcA' ]

 

이와 같이 나오게 된다. 즉 str1 에 str2 가 존재하게 되면 첫번째 console 처럼 배열이 두개로 나뉘어서 출력이 되게 되는데 이 원리를 이용해서 split(str2).length 를 했을 때 1보다 크다면 str1 안에 str2가 존재해서 split 함수를 통해 나뉘어진 것이므로 1을 리턴하고, 존재하지 않아 1보다 크지 않다면 2를 리턴하게 코드가 구성되어 있다. 

 

'Record > TIL' 카테고리의 다른 글

TIL 20230318(온보딩 11일차)  (0) 2023.03.18
TIL 20230317(온보딩 10일차)  (0) 2023.03.17
TIL 20230313(온보딩 6일차)  (0) 2023.03.15
TIL 2023.03.10(온보딩 5일차)  (0) 2023.03.11
TIL 2023.03.08(온보딩 4일차)  (0) 2023.03.10

댓글