프로그래머스 LEVEL 3(110 옮기기)

image

  • 사용 언어 : javascript

  • 해결 날짜 : 2023-05-18

  • 해결 방법 :

    • 문자열은 사전 순으로 앞으로 오게 만들어야 하므로 0이 최대한 앞으로 오게 해야한다.
    • s에 담긴 x를 돌며
      • ‘0’이 나올 때 앞에 ‘1’이 2개 이상 있다면 ‘110’ 개수(count) 추가
      • 2개 미만이라면
        • 1개일 때 최종 문자열(temp)에 ‘10’ 추가
        • 0개일 때 최종 문자열(temp)에 ‘0’ 추가
    • ‘110’ 개수(count)만큼 최종 문자열(temp)에 ‘110’ 추가
    • 남은 ‘1’ 개수(oneCount)만큼 최종 문자열(temp)에 ‘1’ 추가
  • 회고 :

    • x
  • 코드

    function solution(s) {
      return s.map((x) => {
        let temp = '';
        let count = 0;
        let oneCount = 0;
    
        x.split('').forEach((c) => {
          if (c === '1') {
            oneCount += 1;
            return;
          }
    
          if (oneCount >= 2) {
            count += 1;
            oneCount -= 2;
          } else {
            temp += oneCount === 1 ? '10' : '0';
            oneCount = 0;
          }
        });
    
        for (let i = 0; i < count; i++) {
          temp += '110';
        }
    
        for (let i = 0; i < oneCount; i++) {
          temp += '1';
        }
    
        return temp;
      });
    }
    
  • 출처: 프로그래머스 코딩 테스트 연습, https://school.programmers.co.kr/learn/challenges