무작위 값으로 만들어진 두 배열을 주고, 가장 근사치에 해당하는 값들의 합을 구하는 문제이다.
즉, seats = [3,1,5] 와 stduents = [2,7,4] 에서 근사치들에 해당하는 값을 구하는 것인데
해당 예시에 따른 예를 들어보자면,
두 배열을 오름차순으로 정렬하고 각 배열들의 차이를 더해서 return 한다
var minMovesToSeat = function(seats, students) {
seats.sort((a,b) => a-b)
students.sort((a,b) => a-b)
let move = 0
for(var i = 0 ; i < seats.length ; ++ i){
move += Math.abs(seats[i] - students[i])
}
return move
};
0과 1의 숫자값으로 이루어진 문자열 하나를 주고 가장 큰 홀수 값을 찾는 문제이다. 이때 1은 최소 한개 이상이다.
문자열에서 '1'에 해당하는 개수를 먼저 세기로 해본다. python에는 s.count('1')과 같은 함수가 있으나 javascript에는 해당 함수가 없으므로 직접 만들어야 한다.
function countOnes(s) {
return (s.match(/1/g) || []).length;
}
이렇게 해서 1의 개수를 세어준 후 다음과 같은 풀이를 통해서 진행한다.
var maximumOddBinaryNumber = function(s) {
let result = ''
const oneCount = countOnes(s) - 1
//하나를 제외한 1의 개수를 더함
for(let i = 0 ; i < oneCount ; ++i){
result += '1'
}
//그 결과에 나머지 0들을 더함
for(let i = oneCount ; i < s.length - 1 ; ++i){
result += '0'
}
//맨마지막에 1 더함
return result + '1'
};