처음 내가 생각한 코드
const input = require('fs').readFileSync('index.txt').toString().trim().split(' ');
let N = Number(input[0]) //공
let K = Number(input[1]) //바구니
let result
let num = N / K //몫
let arr = new Array(K).fill(num)
let sum
for (let i = 1; i <= K; i++) {
sum += i
}
if (sum > num) {
result = -1
console.log(result)
}
if (K % 2 !== 0) {
let middle = parseInt(K / 2)
let arr2 = []
let j = -1
let k = 1
for (let i = middle - 1; i >= 0; i--, j--) {
arr2.push(arr[i] + j)
}
for (let z = middle + 1; z <= arr.length - 1; z++, k++) {
arr2.push(arr[z] + k)
}
arr2.sort((a, b) => a - b)
if (arr2.includes(0)) {
result = -1
}
else {
result = arr2[arr2.length - 1] - arr2[0]
}
}
if (K % 2 == 0) {
let middle = parseInt(K / 2) - 1
let arr2 = []
let j = -1
let k = 1
for (let i = middle; i >= 0; i--, j--) {
arr2.push(arr[i] + j)
}
for (let z = middle + 1; z <= arr.length - 1; z++, k++) {
arr2.push(arr[z] + k)
}
arr2.sort((a, b) => a - b)
if (arr2.includes(0)) {
result = -1
}
else {
result = arr2[arr2.length - 1] - arr2[0]
}
}
console.log(result)
하지만 예시를 잘못생각해서 n=8 k=3일때 저 코드는 맞지 않는다.
그래서 로직을 코드로 구현하는것이 아닌, 일단 로직을 짜놓은 상태라고 하고 결과값 출력 방식에 대한 반복이 있을시 그 결과값을 출력할 수 있도록 해야겠다.
그래서
이런식으로 코드를 짜면 된다.
굳이 로직을 짜려고 시도하지 말고 일단 로직을 짜고 결과값도 반환해서 규칙을 찾아보자.
접근법 : 회문인지 데이터를 넣어 확인하는 함수를 만들었고, 초기값이 회문이 아닐시 오른쪽꺼 하나씩 지워보고, 왼쪽씩 하나씩 지워본 문자열을 회문인지 체크한다.
해결법 : slice부분이 좀 힘들었는데, 한글자만 지워야 하니까 0부터 해당글자 전까지 남겨두고, 해당글자+1부터 뒤에 쭉 더한 문자열을 체크함수에 넣어줬다.