코테
코드 처리하기
콩쥐땃쥐
2025. 1. 8. 01:56
1차시도
function solution(code) {
let a = '';
let mode = 0;
for (let i = 0; i<code.length; i++){
if (code[i] === '1' && mode === 1){
mode = 0
}
else if (code[i] === '1' && mode === 0){
mode = 1
}
else if(mode === 0 && i % 2 === 0){
a += code[i];
}
else if (mode === 1 && i % 2 === 1){
a += code[i];
}
}
return a;
}
마지막에 오답이 발견돼서 질문에 가보니 EMPTY 예외처리를 해주지 않아서 발생한 문제였다.
2차시도
function solution(code) {
let a = '';
let mode = 0;
for (let i = 0; i<code.length; i++){
if (code[i] === '1' && mode === 1){
mode = 0
}
else if (code[i] === '1' && mode === 0){
mode = 1
}
else if(mode === 0 && i % 2 === 0){
a += code[i];
}
else if (mode === 1 && i % 2 === 1){
a += code[i];
}
}
return a === '' ? 'EMPTY' : a ;
}
이렇게 수정해주니 통과는 했지만 아래처럼 시간이 너무 길어진다는 문제가 생겼다. else가 많아서 생긴 문제일까
3차시도
function solution(code) {
let a = '';
let mode = 0;
for (let i = 0; i<code.length; i++){
if(mode === 0 && (i % 2 === 0 || code[i] === "1")){
code[i] === "1" ? mode = 1 : a += code[i];
}
else if (mode === 1 && i % 2 === 1 || code[i] === "1"){
code[i] === "1" ? mode = 0 : a += code[i];
}
}
return a === '' ? 'EMPTY' : a ;
}
더 느려졌다...
4차시도?
function solution(code) {
let a = '';
let mode = 0;
for (let i = 0; i<code.length; i++){
if(mode === 0 && (i % 2 === 0 || code[i] === "1")){
code[i] === "1" ? mode = 1 : a += code[i];
}
else if (mode === 1 && i % 2 === 1 || code[i] === "1"){
code[i] === "1" ? mode = 0 : a += code[i];
}
}
return a === '' ? 'EMPTY' : a ;
}
마찬가지로 첫 번째보다는 더 느려졌다
다른 사람의 풀이는 간단한 게 있었는데
function solution(code) {
let answer = '';
let mode = 0;
for (let i = 0; i < code.length; i += 1) {
if (Number(code[i]) === 1) {
mode = mode === 1 ? 0 : 1;
}
if (Number(code[i]) !== 1 && i % 2 === mode) {
answer += code[i];
}
}
return answer.length > 0 ? answer : 'EMPTY';
}
엄청 간결하고... 깔끔하다 창의성이 있어야하나?