본문 바로가기
코테연습

121. 문자열 내림차순으로 배치하기 Javascript

by hxunz 2022. 9. 12.

https://school.programmers.co.kr/learn/courses/30/lessons/12917

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

1. 문제에 대한 이해

  • 우리가 풀어야 할 문제는 무엇인가?
     - 문자열 s에 나타나는 문자를 큰것부터 작은 순으로 정렬해 새로운 문자열을 리턴
  • 주어진 자료는 무엇인가?
     - 문자열 s
  • 조건은 무엇인가?
     - s는 영문 대소문자로만 구성되어 있으며, 대문자는 소문자보다 작은 것으로 간주합니다.
     -
    str은 길이 1 이상인 문자열입니다.

 

2. 계획

  1. 큰것부터 작은 순으로 정렬하는데 대문자는 소문자보다 작다
  2.  대문자 정렬
  3. 소문자 정렬

3. 실행

  • 풀이 계획을 실행하고, 각 단계가 올바른지 점검하라.
function solution(s) {
  // 큰것부터 작은 순으로 정렬하는데 대문자는 소문자보다 작다
  const arr = s.split('');

  //대문자 정렬
  let upperArr = [];
  arr.map((it) => {
    if (it.toUpperCase() === it) {
      return upperArr.push(it)
    }
  });
  upperArr.sort((a, b) => {
    if (a > b) return -1;
    else if (b > a) return 1;
    else return 0;
  })

  //소문자 정렬
  let lowerArr = [];
  arr.map((it) => {
    if (it.toLowerCase() === it) {
      return lowerArr.push(it)
    }
  })
  lowerArr.sort((a, b) => {
    if (a > b) return -1;
    else if (b > a) return 1;
    else return 0;
  })

  return [...lowerArr, ...upperArr].join('')
}

test('strSort', () => {
  expect(solution("Zbcdefg")).toEqual("gfedcbZ");
});

 

 

댓글