문제
알파벳 두 묶음의 군대가 서로 싸우고 있는 상황을 생각해 보십시오. 두 병사의 무게와 무게는 다음과 같습니다. -
팀A
| 병사 | <일>무게 |
|---|---|
| A | 1 |
| B | 2 |
| C | 3 |
| D | 4 |
팀B
| 병사 | <일>무게 |
|---|---|
| W | 1 |
| X | 2 |
| Y | 3 |
| Z | 4 |
병사들 말고도 '!'로 표시된 투기장에는 폭탄이 있고, 그 옆에는 폭탄이 있는 병사들을 죽일 수 있습니다.
예:'A!BC'는 'C'가 되고 '!!CC!!'는 ''가 됩니다.
우리의 함수는 경기장에 있는 모든 폭탄이 언제 터지면 두 팀이 같은 무게로 끝날 경우 어느 팀이 승리하는지 알아내야 합니다.
예를 들어, 함수에 대한 입력이 -
인 경우입력
const str = '!WX!YZ!DC!BA!';
출력
const output = 'Tie';
출력 설명
모든 폭탄이 터지면 두 팀 모두 같은 점수로 끝날 것이기 때문입니다.
예시
다음은 코드입니다 -
const str = '!WX!YZ!DC!BA!';
const stringFight = (str) => {
const map = {
'D': 4,'C': 3,'B': 2,'A': 1,
'Z': -4,'Y': -3,'X': -2,'W': -1
};
const arr = [];
const arr1 = str.split('');
for(let i=0;i<str.length;i++){
if(arr1[i-1] !== '!' && arr1[i] !== '!' && arr1[i+1] !== '!'){
arr.push(arr1[i]);
};
};
const sum = arr.reduce((a, b) => a + (map[b] ? map[b] : 0), 0);
if(sum < 0){
return 'Team B';
if(sum < 0){
return 'Team B';
}else if(sum > 0){
return 'Team A';
}else{
return 'Tie';
};
};
console.log(stringFight(str)); 출력
Tie