반응형
코딩테스트 코드 처리하기
문제
문제를 정리해보자면,
code 문자열에 1을 만나면 mode 변수에 1과 0이 토글되어야 하는 형식입니다.
mode 변수의 값이 0일땐 code문자열의 짝수 번째 문자만 answer 문자열에 추가 해줍니다.
mode 변수의 값이 1일땐 code 문자열의 홀수 번째 문자만 answer 문자열에 추가 해줍니다.
입출력 예시
문제의 정보를 알았으니 한번 코드를 짜보겠습니다!
let code = "abc1abc1abc";
let answer = '';
let mode = 0;
const arr = code.split(""); //code문자열을 한글자씩 쪼개기
//["a","b","c","1","a","b","c","1","a","b","c"]
arr.forEach((e,i) => {
});
문제 설명에서 시작할 때 mode는 0이라고 하므로 값에 0 대입해주겠습니다.
ret 변수대신 answer 변수를 사용하였습니다. ( 정답 변수에 익숙해져 있으므로)
제가 생각한 방법은 code 문자열을 한글자씩 쪼개어 mode 값에 따라 짝수번째, 홀수번째 문자열을 출력하는 조건을 걸어 버리는 형식으로 가보겠습니다.
let code = "abc1abc1abc";
let answer = '';
let mode = 0;
const arr = code.split(""); //code문자열을 한글자씩 쪼개기
//["a","b","c","1","a","b","c","1","a","b","c"]
arr.forEach((e,i) => {
if(e == 1 && mode == 0){ //문자열 1을 만나면 mode 값 체인지 (토글방식)
mode++;
} else if( e == 1 && mode == 1){
mode--;
}
});
우선 code 문자열에서 1을 만날때마다 mode가 0과 1을 토글하는 방식으로 만들었습니다.
이제 mode값에 따라 조건문을 쓰면 될거같습니다.
let code = "abc1abc1abc";
let answer = '';
let mode = 0;
const arr = code.split(""); //code문자열을 한글자씩 쪼개기
//["a","b","c","1","a","b","c","1","a","b","c"]
arr.forEach((e,i) => {
if(e == 1 && mode == 0){ //문자열 1을 만나면 mode 값 체인지 (토글방식)
mode++;
} else if( e == 1 && mode == 1){
mode--;
}
if(e != 1 && mode == 0 && i%2 == 0){ //mode가 0일때 짝수 인덱스만 answer에 값 추가
answer += e;
}
if(e != 1 && mode == 1 && i % 2 == 1){ ////mode가 1일때 홀수 인덱스만 answer에 값 추가
answer += e;
}
});
//answer : "acbac"
e!=1 : arr 요소값이 1이 아닐때. 즉 알파벳만 취급한다는 느낌입니다.
문제는 다 풀었지만 놓쳤던 부분이 있습니다.
만약 조건이 하나도 맞지 않아 answer 가 빈공간이 되면 EMPTY란 문자를 출력해야 합니다.
let code = "abc1abc1abc";
let answer = '';
let mode = 0;
const arr = code.split(""); //code문자열을 한글자씩 쪼개기
//["a","b","c","1","a","b","c","1","a","b","c"]
arr.forEach((e,i) => {
if(e == 1 && mode == 0){ //문자열 1을 만나면 mode 값 체인지 (토글방식)
mode++;
} else if( e == 1 && mode == 1){
mode--;
}
if(e != 1 && mode == 0 && i%2 == 0){ //mode가 0일때 짝수 인덱스만 answer에 값 추가
answer += e;
}
if(e != 1 && mode == 1 && i % 2 == 1){ ////mode가 1일때 홀수 인덱스만 answer에 값 추가
answer += e;
}
});
if(answer == ''){ //빈 공간일 시 EMPTY 출력
answer = "EMPTY";
}
//answer : "acbac"
뭔가 if문이 많아 지져분해 보이지만 이게 제 한계인거 같습니다..
문제는 풀었으니 역시 장땡입니다!