(알고리즘) CNP : 제가 필요한 데이터는 이런거 저런거 요런거에요!

호두파파·2022년 2월 3일
0

알고리즘 연습

목록 보기
54/60


문제 설명

주어진 문자열을 가지고 아래 문제에 대한 프로그램을 작성해주세요. 구현 언어는 자유롭게 선정해주시고요.

입력예제

  • 문자열 : '이사부, 장보고, 대조영, 강감찬, 문익점, 이순신, 김두한, 이율곡, 이퇴계, 이사부, 장보고, 문익점, 이순신, 김두한, 이율곡, 이순신, 김두한, 이율곡, 김정민'

문제 4-1: 김씨와 이씨는 각각 몇 명인가요?

문제 4-2: “이순신”이란 이름은 몇 번 반복되나요?

문제 4-3: 중복을 제거한 이름을 출력하세요.

문제 4-4: 중복을 제거한 이름을 내림차순으로 정렬하여 출력하세요.


로켓펀치 채용 공고를 보다가, CNP에서 출제한 문제가 있길래 한 가지를 풀어보았다. 출제자의 의도를 이해해보면서 문제를 풀어보았다.

원래대로라면, 서버에서 데이터를 조회해서 받아온 데이터 더미를 json.stringify 등을 이용해 객체로 가공해 사용하겠지만, 어짿든 이 문제의 요구대로 문자열로 초기 데이터를 세팅했다.

각각의 문제에 맞게 함수를 별도로 작성해 solutions라는 함수에서 실행되도록 위치시켰다.


코드보기

const s = '이사부, 장보고, 대조영, 강감찬, 문익점, 이순신, 김두한, 이율곡, 이퇴계, 이사부, 장보고, 문익점, 이순신, 김두한, 이율곡, 이순신, 김두한, 이율곡, 김정민';

function generalFinder(obj) {
  for(let key in obj) {
    if (key === '이순신') console.log('이순신 장군님', obj[key]);
  }
}

function familyNameCounter(obj) {
  let kim = 0;
  let lee = 0;
  for(let key in obj) {
    const familyName = key.split('')[0];
    if (familyName === '김') {
      kim += obj[key];
    }
    if (familyName === '이') {
      lee += obj[key];
    }
  }
  console.log('김씨는', kim);
  console.log('이씨는', lee);
};

function duplicationRemover(arr) {
  const uniqueArr = [...new Set(arr)];
  console.log('중복제거', uniqueArr);
  console.log('내림차순정렬', uniqueArr.sort().reverse());
}

function solutions(s) {
  let obj = {};
  const arr = s.split(', ');
  console.log(arr);
  for (let x of arr) {
    obj[x] ? obj[x] += 1 : obj[x] = 1
  }
  console.log(obj);
  generalFinder(obj);
  familyNameCounter(obj);
  duplicationRemover(arr);
}

console.log(solutions(s));

실행 결과

profile
안녕하세요 주니어 프론트엔드 개발자 양윤성입니다.

0개의 댓글