코딩테스트

코딩테스트 컨트롤 제트

김도현2 2023. 6. 8. 22:17
반응형

코딩테스트 컨트롤 제트

 

문제 설명

 

출력 예시

 

 

숫자와 "Z"가 공백으로 간격이 있는 문자열이 주어집니다.

문자열에서 숫자는 다 더하여 출력하지만 "Z" 나온다면 바로 전에 나왔던 숫자는 뺀다는 뜻입니다.

 

즉 더했던걸 되돌리기 하는 느낌이죠. 바로 문제 풀이 가겠습니다!

 

 

let s = "10 Z 20 Z 1";
let spl = s.split(' ');
var answer = 0;

spl.forEach((e,i)=>{
   
})

//1

간격이 공백으로 있으니 바로 스플릿으로 문자열을 쪼개주겠습니다.

 

spl 에는 ["10","Z","20","Z","1"] 이런 배열이 생깁니다.

10이랑 20뒤에 "Z"가 붙으니 무효처리 되고 나머지 1만 남아 답은 1이 출력되어야 합니다.

 

바로 forEach를 사용하여 다음 인덱스 요소끼리 비교해서 더하거나 냅두거나 하는 방향으로 가겠습니다.

 

 

let s = "10 Z 20 Z 1";
let spl = s.split(' ');
var answer = 0;

spl.forEach((e,i)=>{
   if(e != "Z"){
        if(spl[i+1] != "Z"){
            answer += parseInt(e)
        }
    }
})

//1

요소를 비교할때는 숫자열만 찾아서 비교를 할거기 때문에 != "Z"를 하여 문자 Z가 나오면 무시하도록 했습니다.

 

숫자가 나왔을 때 다음 인덱스 요소가 Z가 아닐 때 현재 요소를 parseInt() 메서드를 사용하여

문자열을 숫자열로 만들어 숫자를 answer에 차곡차곡 더해줍니다.

 

그렇담 1만 남아서 answer엔 1이 출력 됩니다~