5kg, 3kg 봉지가 있고 최소 개수의 봉지를 가지고 (N)kg을 정확히 배달해야한다. 정확한 배달이 불가능하다면 -1 출력
-3
을 하고 5로 나뉜다면 5로 나눈 횟수를 더하고 아니라면 -1을 출력한다.let fs = require('fs')
let input = fs.readFileSync('/dev/stdin').toString().split('\n');
let n = Number(input[0]);
let res = 0;
while (true)
{
if (n % 5 === 0 || n < 0)
break;
n -= 3;
res++;
}
if (n === 0)
console.log(res)
else if ( n < 0)
console.log(-1)
else
{
res += parseInt(n / 5)
console.log(res)
}
A에서 B로 숫자를 바꾸고 싶을 때 할 수 있는 방법 2가지가 주어진다.
1. 2를 곱한다.
2. 1을 수 가장 오른쪽에 추가한다.
1
이라면 B에 1을 빼주고 10을 나눈다.let fs = require('fs')
let input = fs.readFileSync('/dev/stdin').toString().split('\n');
let [n, m] = [Number(input[0].split(' ')[0]), Number(input[0].split(' ')[1])];
let res = 1;
while (true)
{
if (m <= n)
break;
if (m % 2 === 0)
{
m /= 2;
res++;
}
else if (m % 10 === 1)
{
m -= 1;
m /= 10;
res++;
}
else
break;
}
if (n === m)
console.log(res)
else
console.log(-1)
해결 방법
let fs = require('fs')
let input = fs.readFileSync('/dev/stdin').toString().split('\n');
let n = Number(input[0].split(' ')[0])
let i = 0;
let j = 0;
while (i <= n)
{
j++;
i += j;
}
console.log(j - 1);
해결 방법
minValue
를 두 번째 점수의 비교 변수로 사용하며 비교해주면 된다.let fs = require('fs')
let input = fs.readFileSync('/dev/stdin').toString().split('\n');
let n = Number(input[0])
let i = 1
let j
for (let tc = 0; tc < n; tc++)
{
j = Number(input[i])
let arr = [];
for (let k = i + 1; k <= i + j; k++)
{
let cases = input[k].split(' ').map(Number)
arr.push(cases)
}
i += j + 1;
arr.sort((a, b)=>a[0]-b[0])
let cnt = 0;
let minValue = 100001;
for(let [x, y] of arr)
{
if (y < minValue){
minValue = y;
cnt++;
}
}
console.log(cnt);
}