[TIL - 프로그래머스 문제풀이 3]

..·2023년 4월 10일
0

TIL

목록 보기
7/22
post-thumbnail

문제

이상한 문자 만들기

문제 설명

문자열 s는 한 개 이상의 단어로 구성되어 있습니다. 각 단어는 하나 이상의 공백문자로 구분되어 있습니다. 각 단어의 짝수번째 알파벳은 대문자로, 홀수번째 알파벳은 소문자로 바꾼 문자열을 리턴하는 함수, solution을 완성하세요.

제한 사항
문자열 전체의 짝/홀수 인덱스가 아니라, 단어(공백을 기준)별로 짝/홀수 인덱스를 판단해야합니다.
첫 번째 글자는 0번째 인덱스로 보아 짝수번째 알파벳으로 처리해야 합니다.


풀이

  1. split(' ')으로 공백기준으로 단어를 나눈 다음 map을 사용해 새로운 배열로 만든다
  2. 요소인 배열 word를 한글자씩 또 나눠서 배열에 넣고 그 글자 a의
  3. 인덱스가 짝수인경우 대문자, 홀수인 경우 소문자로 바꿔준다
    4.다시 합쳐준다

map()을 사용해서 새로운 배열로 만드는 것만 알았지 인덱스 값도 받는 걸 완전 잊고있었다. map()은 콜백함수의 매개변수로 받을 수 있는 종류가 세 가지가 있다.


해결

 function solution(s) {
  return s.split(' ').map(word => {
    return word.split('').map((a, index) => {
      if (index % 2 === 0) {
        return a.toUpperCase();
      } else {
        return a.toLowerCase();
      }
    }).join('');
  }).join(' ');
}

습득

isNaN()

isNaN() 함수는 인자가 숫자(Number)인지 여부를 판단하는 메소드. 만약 인자가 숫자이면 false를 반환하고, 숫자가 아니면 true를 반환한다.

indexOf()

  • indexOf() 메소드는 문자열이나 배열에서 지정한 값의 위치(인덱스)를 반환한다. 만약 찾으려는 값이 존재하지 않으면 -1을 반환한다.

  • indexOf() 메소드는 검색을 시작할 인덱스를 지정할 수 있다.
    ex) index('apple',2) //2번 인덱스부터 'apple'검색 시작

map()

  • .map()은 배열 메소드 중 하나로, 배열의 각 요소에 대해 주어진 콜백 함수를 호출하고 그 결과를 새로운 배열로 반환한다.

  • .map() 메소드는 원본 배열을 변경하지 않는다. 대신, 각 요소에 대해 콜백 함수를 호출하여 그 결과를 새로운 배열에 추가한다. 그리고 최종적으로 새로운 배열을 반환한다.

  • array.map((currentValue, index, array) => { ... })
    currentValue: 현재 처리되고 있는 요소의 값.
    index: 현재 처리되고 있는 요소의 인덱스.
    array: map() 메소드가 호출된 배열.

  • .map(Number) : 숫자형 배열로 변환하는데 사용할 수 있다.

  • .map(String) : 문자열 배열로 변환하는데 사용할 수 있다.

toUpperCase()

  • toUpperCase() 메소드는 문자열을 모두 대문자로 변환한 새로운 문자열을 반환한다.
  • 주의할 점은 toUpperCase() 메소드가 호출된 문자열 자체를 변경하지 않고 새로운 대문자 문자열을 반환한다는 것이다.
  • 만약 원래 문자열을 대문자로 변환하려면, toUpperCase() 메소드를 호출한 결과를 새로운 변수에 할당해야 한다.
let str = 'hello world';
str = str.toUpperCase();

console.log(str); // "HELLO WORLD"

toLowerCase()

  • toLowerCase() 메소드는 문자열을 모두 소문자로 변환한다.
  • toUpperCase()와 같은 성질을 가지고 있고 소문자로 변환한다는 것만 다르다.

0개의 댓글