아래와 같은 과정을 거쳐 부등호 수(inequalityNumber)를 만들 수 있습니다.
<
, >
)가 주어집니다.부등호 기호들을 입력받아 부등호를 만족하는 최대 부등호 수와 최소 부등호 수의 차이를 리턴해야 합니다.
string
타입의 공백을 사이에 둔 부등호 기호들signs.length
는 17 이하 (최대 9개의 부등호 기호)number
타입을 리턴해야 합니다.let output = inequalityNumber('<');
console.log(output); // --> 88 (89 - 01)
output = inequalityNumber('< >');
console.log(output); // --> 876 (897 - 021)
output = inequalityNumber('> < >');
console.log(output); // --> 8,754 (9,786 - 1,032)
const getMaxNumber = (signs, numTable) => {
let max = '';
for (let i = 0; i < signs.length; i++) {
if (signs[i] === '>') {
max += String(numTable.pop())
} else {
let count = 1;
for (let j = i + 1; j < signs.length; j++) {
if (signs[j] === '<') count++
else break
}
max += String(numTable.splice(numTable.length - 1 - count, 1))
}
}
max += numTable.pop()
return max
}
const getMinNumber = (signs, numTable) => {
let min = '';
for (let i = 0; i < signs.length; i++) {
if (signs[i] === '<') {
min += String(numTable.shift())
} else {
let count = 1;
for (let j = i + 1; j < signs.length; j++) {
if (signs[j] === '>') count++
else break
}
min += String(numTable.splice(count, 1))
}
}
min += numTable.shift()
return min
}
const inequalityNumber = function (signs) {
signs = signs.split(' ')
let number = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
const answer = getMaxNumber(signs, number.slice()) - getMinNumber(signs, number.slice())
return answer
}