프로그래머스 LEVEL 3(110 옮기기)
-
사용 언어 : 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