문제 05 📓

문자열을 입력받아 순서가 뒤집힌 문자열을 리턴해야 합니다.

- 입출력

  • 입력: string 타입의 공백이 있는 알파벳 문자열
  • 출력: string 타입을 리턴

- 입출력 예시

let output = firstReverse('codestates');
console.log(output); // "setatsedoc"

output = firstReverse('I love codestates');
console.log(output); // "setatsedoc evol I"

- 나의 풀이

1) 문자열의 마지막 인덱스부터 첫 인덱스 값까지 역순으로 for문으로 조회한다.
2) 조회한 값을 새로운 변수 result에 담아준다

function firstReverse(str) {
  let result = ''
  for (let i = str.length - 1; i >= 0; i = i-1) {
  result = result + str[i];
} return result;
}

- 결과

통과 👌

- Reference code

function firstReverse(str) {
  return str.split('').reverse().join('');
}

캐릭터별로 나누어 배열로 만든 후, 배열 메소드 reverse()를 활용하여 순서를 역순으로 변경하여 다시 join()를 활용하여 문자열로 묶어 주었다.

문제 06 📓

문자열을 입력받아 문자열을 구성하는 각 단어의 첫 글자가 대문자인 문자열을 리턴해야 합니다.

- 입출력

  • 입력: string 타입의 공백이 있는 알파벳 문자열 입력
  • 출력: string 타입을 출력

- 입출력 예시

let output1 = letterCapitalize('hello world');
console.log(output1); // "Hello World"
let output2 = letterCapitalize('javascript  is sexy ');
console.log(output2); // "Javascript  Is Sexy "

- 나의 풀이

1) split 메소드를 활용하여 문자열을 (' ') 기준으로 배열을 만든다
띄어쓰기가 두 칸의 경우 배열로 만들어 보니 빈 문자열('')로 하나의 인덱스를 차지한다.
2) 배열의 각 인덱스를 for문으로 조회한다.
3) 빈 문자열 인데스를 제외하고 인덱스로 조회한 문자열의 첫 글자([0][0])만 uppercase 메소드 사용하여 대문자화하고 나머지를 (slice(1)) 그대로 담는다.
4) 업데이트한 새 인덱스 값을 각 인덱스에 수정한다.
5) join 메소드를 활용하여 다시 배열을 문자열로 묶는다.

function letterCapitalize(str) {
  let strSplit = str.split(' ');

  for (let i = 0; i < strSplit.length; i++) {
    if (strSplit[i].length > 0) {
      strSplit[i] = strSplit[i][0].toUpperCase() + strSplit[i].slice(1);
    }
} let result = strSplit.join(' ');
  return result
}

- 결과

통과 👌

문제 07 📓

2차원 배열(배열을 요소로 갖는 배열)을 입력받아 각 배열을 이용해 만든 객체를 리턴해야 합니다.

- 입출력

  • 입력: 배열을 요소로 갖는 배열 / arr[i]는 string 타입을 요소로 갖는 배열 / arr[i].length는 0 또는 2
  • 출력: arr[i]의 첫 번째 요소를 키, 두 번째 요소를 값으로 하는 객체를 출력

- 입출력 예시

const arr = [
  ['make', 'Ford'],
  ['model', 'Mustang'],
  ['year', '1964'],
  ['make', 'Bill'],
];

let output = convertListToObject(arr);

console.log(output) // -->
{
  make : 'Ford'
  model : 'Mustang',
  year : '1964'
}

- 나의 풀이

1) 배열을 for문으로 조회하여 0번의 인덱스의 첫 번째 값을 key로 선언하고, 두 번째 값을 value로 할당한다
2) 이미 동일한 ke가 들어가 있는 경우와 배열 내 배열이 빈 배열인 경우를 제외하는 조건을 넣는다.
3) 빈 배열이 인자값으로 들어가는 경우 빈 객체로 반환하기 위한 식도 추가해 준다.

function convertListToObject(arr) {  
  let obj = {}
  if (arr.length === 0) {
    return {}
  }
  for (let i = 0; i < arr.length; i++) {
  if (obj[arr[i][0]] === undefined && arr[i].length !==  0) {
  obj[arr[i][0]] = arr[i][1]
  }
}
return obj;
}

- 결과

통과 👌

문제 08 📓

문자열을 입력받아 해당 문자열에 등장하는 두 칸의 공백을 모두 한 칸의 공백으로 바꾼 문자열을 리턴해야 합니다.

- 입출력

  • 입력: string 타입의 문자열
  • 출력: string 타입의 문자열

- 입출력 예시

let output = convertDoubleSpaceToSingle('string  with  double  spaces');
console.log(output); // --> "string with double spaces"

- 나의 풀이

1) split 메소드를 활용하여 두 칸의 공백(" ")을 기준으로 배열로 만듬
2) join 메소드를 활용하여 한 칸의 공백(" ")을 기준으로 string 타입으로 다시 묶음

function convertDoubleSpaceToSingle(str) {
  return str.split('  ').join(' ');
}

- 결과

통과 👌

- Reference code

function convertDoubleSpaceToSingle(str) {
  let result = '';
  let before = '';
  for (let i = 0; i < str.length; i++) {
    // 직전의 문자가 공백이고, 현재의 문자도 공백인 경우
    // 즉, 현재의 문자가 두 번째 공백인 경우(에만), 무시한다.
    if (before !== ' ' || str[i] !== ' ') {
      result = result + str[i];
    }
    before = str[i];
  }
  return result;
}

before 변수의 값을 for문 안에 있는 before = str[i]에서 가져온다.

0개의 댓글

Powered by GraphCDN, the GraphQL CDN