머쓱이는 큰 종이를 1 x 1 크기로 자르려고 합니다. 예를 들어 2 x 2 크기의 종이를 1 x 1 크기로 자르려면 최소 가위질 세 번이 필요합니다.
정수 M, N이 매개변수로 주어질 때, M x N 크기의 종이를 최소로 가위질 해야하는 횟수를 return 하도록 solution 함수를 완성해보세요.


//내 코드
function solution(M, N) {
return M*N-1;
}
//입출력 예를 보고 규칙을 찾았는데 m*n-1을 하면 result값이 나왔다.
//내 코드(다른 풀이)
function solution(M, N) {
return (M-1)+(N-1)*M;
}
//먼저 M이 1이 될때까지 잘라야 하므로 가로 자르는 횟수는 M-1
//N도 1이 될때까지 잘라야 하는데, M이 1일때는 N-1을 하면 되지만,
//M>1부터는 세로 자르는 횟수가 M만큼 곱해진다. 그러므로 (N-1)*M

//내 코드
function solution(A, B) {
if(A===B) return 0;
let count=0;
let a = [...A];
for(let i=A.length-1; i>=0; i--){
a.unshift(a.pop());
count++;
if(a.join('')===B) return count;
}
return -1;
}
//다른 사람 코드
let solution=(a,b)=>(b+b).indexOf(a)
//b를 두번 반복시킨 다음 a가 그 안에 있는지 찾아보면
//밀었을 때 그 글자를 만들 수 있는지 알 수 있다.
//indexOf 자체가 값이 없으면 -1을 출력해 주기 때문에 간결하고 이해하기 쉬운 코드라고 느껴진다.

//내 코드
function solution(common) {
if(common[1] - common[0] === common[common.length-1] - common[common.length-2]){
return common[common.length-1] + (common[1] - common[0]);
}else if(common[0] !== 1){
return common[common.length-1] * (common[0]);
}else return common[common.length-1] * (common[1]);
}
//등차수열 : 0번째와 1번째 요소의 차이 = 마지막요소와 마지막 전 요소의 차이가 같다.
//마지막요소와 (0번째와 1번째 요소의 차이)를 더해서 리턴
//등비수열 : 등차수열이 아닌 것
//마지막요소와 0번째 요소를 곱해주어 리턴
//다른 사람 코드
function solution(common) {
if ((common[1]-common[0])==(common[2]-common[1])){
return common.pop() + common[1] - common[0];
}
else{
return common.pop()*common[1]/common[0];
}
}
//꼭 마지막 숫자와 비교하지 않아도 1번째와 2번째의 차이랑 비교해도 된다.
//그리고 마지막 숫자는 common.pop()으로 불러와도 된다.
//첫번째 요소가 1일수도, 아닐수도 있으므로 나는 2개의 케이스로 나눴는데,
//이 분은 1이든 2든 상관없게 1번째요소를 0번째 요소로 나누고 맨 뒤의 요소를 곱하였다.

//내 코드
function solution(num, total) {
//total/num이 배열의 중간값이므로 초기값은 num/2를 뺀 값이다.
//(15/5 - 5/2) = 1(초기값)
const min = Math.ceil(total / num - Math.floor(num / 2));
// Array() 메서드를 이용해 배열의 길이는 num,
//구해둔 초기값 부터 하나씩 더해 요소를 num까지 채워준다.
return Array(num).fill().map((_, i) => i + min);
}