코플릿 / 객체

support·2021년 9월 6일
0

코딩테스트

목록 보기
8/11
post-thumbnail

1 문제

문자열을 입력받아 문자열을 구성하는 각 문자(letter)를 키로 갖는 객체를 리턴해야 합니다.
각 키의 값은 해당 문자가 문자열에서 등장하는 횟수를 의미하는 number 타입의 값이어야 합니다.

입력으로는 string 타입의 공백이 없는 문자열

출력 으로는 각 문자를 키로 갖는 객체 리턴
(빈문자열일때는 빈객체 리턴)

입출력 예시

let output = count('banana');
console.log(output); // --> {b: 1, a: 3, n: 2}

해설

function count(str) {
  // 입력 : 문자열
  // 출력 : {문자열의 각 문자 : 나온 횟수}
  let obj = {};
  // 해당 문자와 같은 키가 아직 없다 (undefined)
  // 키를 만들어 주고, 값을 0으로 넣어준다
  for (let i = 0; i < str.length; i++) {
    if (obj[str[i]] === undefined) {
      obj[str[i]] = 0;
    }
    obj[str[i]]++;
  }
  return obj;
}

2 문제

문자열을 입력받아 가장 많이 반복되는 문자(letter)를 리턴

입력으로는 string 타입의 공백이 있는 문장
출력으로는 string 타입 리턴

주의 사항
띄어쓰기는 제외, 많이 반복되는 문자가 여러개일경우 먼저 나온문자 리턴
빈 문자열을 입력받은 경우, 빈 문자열을 리턴

입출력 예시

let output = Frequent('apples not oranges');
console.log(output); // --> 'p'

output = Frequent('hello world');
console.log(output); // --> 'l'

output = Frequent('   ');
console.log(output); // --> ''

output = FrequentC('');
console.log(output); // --> ''

output = Frequent('abba');
console.log(output); // --> 'b'

해설

function mostFrequent(str) {
  // 위의 문제는 객체를 리턴 {문자 : 나온 횟수}
  // 이 문제는 가장 많이 반복 된 문자 리턴

  let frequent = ''; //가장 횟수가 많은 문자 저장
  let frequentCount = 0; // 반복 횟수 저장

  let obj = {}
  for (let i = 0; i < str.length; i++){
    if(str[i] === ' '){
      continue;
      //continue 현재 반복에서 명령문의 실행을 종료하고 
      //반복문의 처음으로 돌아가여 루프문의 다음 코드를 실행
    }
    // 문자가 몇번 반복 되었는지 카운트
    if (obj[str[i]] === undefined){
      obj[str[i]] = 0;
    }
    obj[str[i]]++
	
    // 가장 많이 나온 문자 찾기
    if(obj[str[i]] > frequentCount){
      frequentCount = obj[str[i]] // 가장 많이 나온 문자의 횟수
      frequent = str[i] // 가장 많이 나온 문자
    }
  }
  return frequent
}

0개의 댓글

관련 채용 정보