새소식

Baekjoon

[BaekJoon] 14888번 연산자 끼워넣기 문제 - (nodejs)

  • -
728x90
문제 번호 :  14888번

문제 바로가기 ☞  https://www.acmicpc.net/problem/14888

 

<<< 문제 내용 >>>

 

const fs = require("fs"); const filePath = process.platform === "linux" ? "/dev/stdin" : "./input.txt"; let input = fs.readFileSync(filePath).toString().trim().split("\r\n"); // object function const operObj = { "+": (oper1, oper2) => oper1 + oper2, "-": (oper1, oper2) => oper1 - oper2, "*": (oper1, oper2) => oper1 * oper2, "/": (oper1, oper2) => { if (oper1 < 0) { return -Math.floor(-oper1 / oper2); } return Math.floor(oper1 / oper2); }, }; // 백트래킹으로 여러가지 조합 가져오기 const comb = (count) => { if (count === 0) { tempOperate.push([...inArr]); return; } for (let i = 0; i < operator.length; i++) { if (visited[i] === 0) { visited[i] = 1; inArr.push(operator[i]); comb(count - 1); inArr.pop(); visited[i] = 0; } } }; let N = Number(input.shift()); let numArr = input[0].split(" ").map(Number); let [plus, minus, multiple, divide] = input[1].split(" ").map(Number); let operator = []; // 함수로 만들자니 애매하게 작아서 그냥 다 적었음 // 이 부분을 개선하면 좋을텐데 방법이 안떠오름.. for (let i = 0; i < plus; i++) { operator.push("+"); } for (let i = 0; i < minus; i++) { operator.push("-"); } for (let i = 0; i < multiple; i++) { operator.push("*"); } for (let i = 0; i < divide; i++) { operator.push("/"); } // tempOperate는 백트래킹으로 여러가지 조합을 담는 변수 let tempOperate = []; // 백트래킹 내 로직처리를 위한 변수 let inArr = []; // 백트래킹 시 방문한 위치를 알기위한 변수 // 보통 true false로 사용함. let visited = new Array(N - 1).fill(0); comb(N - 1); let result = []; // 조합을 담아둔 변수 하나씩 체크하면서 // 연산자 개수만큼 for문을 열어서 // [1, 2, 3, 4, 5] 로 치면 1, 연산자, 2 순서로 계산할텐데 // 이 계산한 값을 2인 2번째 값에 계속해서 누적해서 저장하고 // 마지막에 누적된 값을 result에 넣어줌. for (let i = 0; i < tempOperate.length; i++) { let copyNumArr = [...numArr]; for (let j = 0; j < N - 1; j++) { copyNumArr[j + 1] = operObj[tempOperate[i][j]]( copyNumArr[j], copyNumArr[j + 1] ); } result.push(copyNumArr[copyNumArr.length - 1]); } console.log(`${Math.max(...result)} ${Math.min(...result)}`);

* 생각보다 힘들었다ㅠㅠ.. 다른 조건이 힘들었다기 보다는 변수가 많아지면서 머리가 어질어질했다.

변수명을 나름대로 고려해서 했는데도, 집중력이 살짝 흐려지는 순간 갑자기 머리가 백지가 됐다..

 

이렇게 정리가 잘 안되는 문제는 확실히 노트를 활용하거나 해야할 듯 싶다.

개인적으로 만만히 봤다가 머리가 지끈했던 문제이다.

 

 

 

 

도움이 되셨다면 공감 부탁드립니다.

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.