20211213-TIL
알고리즘
알고리즘 주차의 마지막문제였다. 정규식을 좀 다룰줄 알아야겠다. 문제이해하는데 시간이 너무오래걸렸다. 정규표현식과 연산자가 문자열일떄 연산을하는 방법을 검색을통해 참고하여 한 2시간 50분정도 걸려 시간내에 겨우 제출할 수있었다..
접근 방법
- 문자열로 주어졌기떄문에 우선 문자열을 기준으로 배열로 나눠야겠다는생각이 들었다.
그래서 split함수를 통해 나누려헀으나, 나눠야할 문자열이 -,+,*3개라 정규식 외의 방법이 떠오르지않았다.( 정규식으로 가능하다는 사실을 혹시나해서 검색을통해 알아보기전까진 한참을 헤맸다.)
정규식을 통해 split함수를 적용할 수있다는걸 검색을통해 알았고, 적용시켰다. - 모든 경우의수를 대입시켜야하지만, 순열을 구현 하자니 막막했다. 근데 최대의 경우의수가+,-,* 3!경우의수로 6개라 직접 모든 경우의수를 나열할 생각을 했다. 여기서 만약 부호가 2개면 어떻게구현할 지를 고민하다가 분기처리로 작성하였고, 우선은 for문으로 모든 연산자의 경우의수를 돌기로 결정하고, 해당하지않는 연산자를 만나면 분기처리로 넘어갔다.
- 연산자가 문자열로되어있어, 연산자를 만났을떄 연산함수를 따로만들어 작성했다.
4.splice를 활용하여 연산된결과를 연산에 사용된 2개의 숫자와 1개의 연산자를포함해 3개를 배열에서 지우고 결과값으로 대체했다.
function solution(expression) {
let answer = 0;
let marks = [["*","-","+"],["*","+","-"],["+","-","*"],["+","*","-"],["-","+","*"],["-","*","+"]];
const expressionArray = expression.split(/(\D)/);
const answerList = [];
const calculator = (n1,n2,operator) => {
if(operator === "+") {
return n1 + n2;
}
if(operator === "-") {
return n1 - n2;
}
if(operator === "*") {
return n1 * n2;
}
}
for(let x of marks) {
const temp = [...expressionArray];
for(let i= 0; i<3; i++) {
for (let j = 0; j<temp.length; j++) {
if(temp[j] === x[i]) {
const result = calculator(+temp[j-1],+temp[j+1],temp[j]);
temp.splice(j-1,3,result)
j = 0;
}
}
}
answerList.push(Math.abs(temp[0]));
}
for(let i = 0; i<answerList.length; i++) {
if(answer < answerList[i]) answer = answerList[i];
}
return answer
}
코어자바스크립트 내용정리(2.실행컨텍스트)
- 실제로 면접을 본다는생각으로 어떤식으로 답변을하면 좋을지를 생각하면서 내용을 정리해보려한다. 확실히 책이 더 자세히 나왔음에도 나름대로 정리를 하면서 읽어나가는게 처음봤을땐 못봤던 내용도 발견되고 좋은것같다.
- 내용정리 링크 : Chapter2. 실행컨텍스트
함수형 자바스크립트 인프런 강의
- 이터레이터/이터러블... 너무 헷갈린다. 결국엔 둘이 동일한 값이라고 결론을 내렸는데 어떻게 바뀔지는 모르겠다.
- 내용정리 링크 : 02. ES6에서의 순회와 이터러블 이터레이터 프로토콜 강의에서 제공한 강의자료에 추가적으로 정리해 나가려한다.
Author And Source
이 문제에 관하여(20211213-TIL), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://velog.io/@shrkdvy123/20211213-TIL-sssfvetc
저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
- 이터레이터/이터러블... 너무 헷갈린다. 결국엔 둘이 동일한 값이라고 결론을 내렸는데 어떻게 바뀔지는 모르겠다.
- 내용정리 링크 : 02. ES6에서의 순회와 이터러블 이터레이터 프로토콜 강의에서 제공한 강의자료에 추가적으로 정리해 나가려한다.
Author And Source
이 문제에 관하여(20211213-TIL), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@shrkdvy123/20211213-TIL-sssfvetc저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)