관리 메뉴

공부기록용

JavaScript 문법 종합(연습03) 본문

✍️문제풀기✍️/JS_Programmers school

JavaScript 문법 종합(연습03)

과부하가즈아 2023. 5. 26. 16:27

Q1. 문자열 my_string이 매개변수로 주어집니다. my_string을 거꾸로 뒤집은 문자열을 return하도록 solution 함수를 완성해주세요.

function solution(my_string) {

    //.split('')을 통해 문자열을 쪼개서 배열로 만들기
    const a = my_string.split('');

    // .reverse()로 쪼개진 배열을 역순으로 바꾸기
    const b = a.reverse();

    // .join("")로 요소들을 문자열로 합치기
    const c = b.join("");

    // console.log(c);

    return c;
}

// solution('bread');
daerb

->문자열을 배열로 하나하나 쪼개고, 뒤집고, (뒤집힌)배열을 다시 하나의 문자열로 합치기 

function solution(my_string) {
    var answer = [...my_string].reverse().join("");
    return answer;
}
function solution (my_string) {
  var newString = ''
  for (let i = my_string.length-1 ; i >= 0; i--) {
    newString += my_string[i]
  }
  return newString
}

 

Q2. 문자열 my_string과 문자 letter이 매개변수로 주어집니다. my_string에서 letter를 제거한 문자열을 return하도록 solution 함수를 완성해주세요.

 

제한사항

  • 1 ≤ my_string의 길이 ≤ 100
  • letter은 길이가 1인 영문자입니다.
  • my_string과 letter은 알파벳 대소문자로 이루어져 있습니다.
  • 대문자와 소문자를 구분합니다.
function solution(my_string, letter) {
    let str = "";
    const arr = my_string.split('');
    for (let i = 0; i < arr.length; i++) {
        if (arr[i] !== letter) str += arr[i];
    }
    return str;
}

function solution(my_string, letter) {

  let answer = "";

  for (let i = 0; i < my_string.length; i++) {
    if (my_string[i] !== letter) {
      answer += my_string[i];
    }
  }
  return answer;
}
function solution(my_string, letter) {
    let answer = [];
    for(let i = 0; i < my_string.length; i++){
        let str = my_string[i];
        if(str === letter){
            continue;            
        } else {
            answer.push(str);
        }
    }
    return answer.join("");
}

Q3. 문자열 my_string과 정수 n이 매개변수로 주어질 때, my_string에 들어있는 각 문자를 n만큼 반복한 문자열을 return 하도록 solution 함수를 완성해보세요.

제한사항
  • 2 ≤ my_string 길이 ≤ 5
  • 2 ≤ n ≤ 10
  • "my_string"은 영어 대소문자로 이루어져 있습니다.
function solution(my_string, n) {
    var answer = '';

    // for문을 사용
    // for문1 : i는 0부터; i는my_string의길이수_5보다 작고; my_string의 길이 수 보다 커지면 반복중단 한다는 의미를 지님(->중단 전까지 for2를 반복할것)
    // for문2 : j는 0부터; j는 n보다 작고; n보다커지면 answer를 출력하지 않을 것
    // answer : 반복이 끝날때 까지의 결과들이 쌓여감

    for (var i = 0; i < my_string.length; i++) {
        for (var j = 0; j < n; j++) {
            answer += my_string[i];
        }
    }

    // console.log(answer);
    return answer;
}

// solution('hello', 3)
// hhheeellllllooo

// i=0 -> j = 0 -> 이때의 i는 0으로 my_string[0] -> h -> answer = h
// i=0 -> j = 1 -> 이때의 i는 0으로 my_string[0] -> h -> answer = hh
// i=0 -> j = 2 -> 이때의 i는 0으로 my_string[0] -> h -> answer = hhh
// i=1 -> j = 0 -> 이때의 i는 1으로 my_string[1] -> e -> answer = hhhe
// 의 반복으로 hhheeellllllooo가 되는것

☆다른방식들 다시보기

function solution(my_string, n) {

    // 1. 문자열을 쪼개서 배열로 만들기
    const arr = my_string.split("");
    
    // 2. 쪼갠 새로운 배열에서 map 함수와 repeat 함수를 써서 각 원소 n만큼 반복
    //
    //
    const arr2 = arr.map(x => x.repeat(n));
    
    // 3. n만큼 반복한 새로운 배열을 다시 문자열로 합치기
    const arr3 = arr2.join("");
    
    // console.log(arr3);

    //문자열 리턴
    return arr3;
}

// solution('hello', 3)
// hhheeellllllooo
function solution(my_string, n) {
    var answer = [...my_string].map(v => v.repeat(n)).join("");
    console.log(answer);
    return answer;
}

map(메소드)

  • 배열 내의 모든 요소 각각에 대하여 주어진 함수를 호출한 결과를 모아 새로운 배열을 반환합니다.

repeat

  • 해당 내용을 반복해 준다.
  • 문자열로 만들 수도 있고,Array를 사용해서 배열로 나눌 수 도 있다.
let s = 'abcde';
s.repeat(2)

'abcdeabcde'
Array.from(s.repeat(10))
['a', 'b', 'c', 'd', 'e', 'a', 'b', 'c', 'd', 'e', 'a', 'b', 'c', 'd', 'e', 'a', 'b', 'c', 'd', 'e', 'a', 'b', 'c', 'd', 'e', 'a', 'b', 'c', 'd', 'e', 'a', 'b', 'c', 'd', 'e', 'a', 'b', 'c', 'd', 'e', 'a', 'b', 'c', 'd', 'e', 'a', 'b', 'c', 'd', 'e']
let a = Array[10]  //빈공간 10개 생김
Array(10).fill(0)  // 빈공간을 0으로 채워주겠다.
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
Array(10).fill(0).map((value,index) =>value+index)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

 

Q4. 머쓱이는 할머니께 생신 축하 편지를 쓰려고 합니다. 할머니가 보시기 편하도록 글자 한 자 한 자를 가로 2cm 크기로 적으려고 하며, 편지를 가로로만 적을 때, 축하 문구 message를 적기 위해 필요한 편지지의 최소 가로길이를 return 하도록 solution 함수를 완성해주세요.

 

제한사항

  • 공백도 하나의 문자로 취급합니다.
  • 1 ≤ message의 길이 ≤ 50
  • 편지지의 여백은 생각하지 않습니다.
  • message는 영문 알파벳 대소문자, ‘!’, ‘~’ 또는 공백으로만 이루어져 있습니다.
function solution(message) {
    var answer = message;

    var num = answer.length*2;

    console.log(num);
    return num;
}
solution("happy birthday!")
function solution(message) {
    return message.length*2;
}

 

Q5. 영어에선 a, e, i, o, u 다섯 가지 알파벳을 모음으로 분류합니다. 문자열 my_string이 매개변수로 주어질 때 모음을 제거한 문자열을 return하도록 solution 함수를 완성해주세요.

 

제한사항

  • my_string은 소문자와 공백으로 이루어져 있습니다.
  • 1 ≤ my_string의 길이 ≤ 1,000
function solution(my_string) {
    var answer = my_string;

    var del = my_string.replace(/a|e|i|o|u/g, "");
    // console.log(del);
    return del;
}

// solution('nice to meet you');
// nc t mt y
function solution(my_string) {
  let answer = "";
  for (i = 0; i < my_string.length; i++) {
    if (
      my_string[i] != "a" &&
      my_string[i] != "e" &&
      my_string[i] != "i" &&
      my_string[i] != "o" &&
      my_string[i] != "u"
    ) {
      answer += my_string[i];
    }
  }
  return answer;
}
function solution (my_stirng) {
  var newString = ''
  for (let i = 0; i <= my_stirng.length-1; i++) {
    if (my_stirng[i] === 'a') {
      continue
    } else if (my_stirng[i] === 'e') {
      continue
    } else if (my_stirng[i] === 'i') {
      continue
    } else if (my_stirng[i] === 'o') {
      continue
    } else if (my_stirng[i] === 'u') {
      continue
    }else {
      newString += my_stirng[i]
    }
  }
  return newString
}
function solution(my_string) {
	return my_string.replace(/a|e|i|o|u/g, "");
  //return my_string.replace(/[aeiou]/g, '');
  //return my_string.replace(/[a,e,i,o,u]/g, '');
}

여러개치환참고

 

Q6. 문자열 str1, str2가 매개변수로 주어집니다. str1 안에 str2가 있다면 1을 없다면 2를 return하도록 solution 함수를 완성해주세요.

 

제한사항

  • 1 ≤ str1의 길이 ≤ 100
  • 1 ≤ str2의 길이 ≤ 100
  • 문자열은 알파벳 대문자, 소문자, 숫자로 구성되어 있습니다.
function solution(str1, str2) {

    // .includes() 를 사용해서 str1에 str2가 들어가 있는지 알아보기(trul, false로 반환)
    // true, false를 반환하는 것을 생각해서 삼항연산식으로 과정 만들기
    return str1.includes(str2) ? 1 : 2 ;

}

console.log(solution("ab6CDE443fgh22iJKlmn1o", "6CD"))
// 1
function solution(str1, str2) {
  let answer = [];
  for (let i = 0; i < str1.length; i++) {
    for (let j = 0; j < str2.length; j++) {
      if (str1[i] === str2[j]) {
        answer.push(str2[j]);
      }
    }
  }
  if (answer.join("") === str2) {
    return 1;
  } else {
    return 2;
  }
}

 

Comments