본문 바로가기
2. 우당탕탕 개발자/2-1. 공부기록

06Jan2020 TIL

by Little Monkey 2020. 1. 7.
반응형

 

Frame work VS Library

Frame work는 그 틀 안에서 코드를 작성, Library 는 필요에 따라 그것을 가져다가 쓰는 것. Library를 이용하여 새로운 Frame work를 작성해도 좋으나, 해당 프레임 워크 속에 버그나 오류를 내가 하나하나 수정해 가며 만들어야 하기 때문에, 보통은 사람들이 이미 안정화 되었다고 판단한 프레임 워크를 사용한다. 설령 오류를 발견하더라도 이용자들이 빠르게 수정/보완하기 때문에. 또한, 프레임 워크를 사용하다 내가 생각한 방향대로 되지 않으면 프레임 워크의 방향을 크게 수정하기 보다는 다른 프레임 워크를 가져다 쓰는게 이롭다.

 


의사 코드 작성법 (위키하우)

어떤 것도 상상에 맡기지 않는다.
프로그램의 작동 과정에 필요한 모든 것을 빠짐없이 기록하자. 의사코드는 단순한 구조의 문장으로 작성하며, 대개 변수가 사용되지 않지만, 계정 번호, 이름, 거래 횟수 같은 현실에서 사용되는 단어를 이용해 프로그램이 해야 할 일을 설명한다.
다음은 유효한 의사코드의 예이다.계정 번호와 비밀번호가 유효하고 일치하면, 기본 계정 정보를 보여 준다.각 주문량에 비례하게 총비용을 할당한다.다음은 유효한 의사코드가 아니다.g=54/r이라고 하자. (이유: 변수를 쓰지 말고, 각 변수의 실제 의미를 적어 주자.)다 될 때까지 주요 과정을 반복한다. (이유: "주요 과정"이 뭔지, "다 되는 것"이 뭔지 명확하게 해야 한다.)

 


Database 의 CRUD

: Create Read Update Delete

Spa 

: Single Page Application (e.g. Facebook, twitter)

MVC pattern

:Model View(UI) Controller(로직, 데이터 처리)


 

Backbone.js 특징 (출처 : 여기)

  • MVC 패턴에 맞게 개발 (역할 분담 편함, 유지보수 유용, 캡슐화 / 재활용 가능)
  • 서버와 잘 붙어 있음
  • 매우 가벼움
  • Underscore.js 에 의존적 (Underscore : 기본 제공 함수 이외의 다양한 함수 지원)
  • JQuery 와 Zepto 사용 지지

NQueens (n*n의 체크판에 n개의 queens 를 중복 없이 놓는 방법)

체크 판의 세로 열 중복 체크 하기

해당 세로 열에 Conflict 가 있는 지 없는지 체크하는 매소드로, 해당 세로열에 말이 2개 이상 놓여져 있는지 체크하는 방법이 조금 달라서 기록해본다. 

// 내 풀이
hasColConflictAt: function(colIndex) {
      let result = 0;
      for (let i = 0; i < this.attributes.n; i++) {
        let arr = this.get(i);
        arr[colIndex] ? result++ : result;
      }
      return result >= 2 ? true : false;
    },
   
// S.O.S 문서 풀이 (이렇게도 생각할 수 있구나!!)
hasColConflictAt: function(colIndex) {
   const size = this.get("n");
      let count = 0;
      for (let i = 0; i < size; i++) {
        const row = this.get(i); 
// n 개의 rows 를 가져온 뒤 colIndex 번째 요소를 모두 더합니다.
      count += row[colIndex];
    }
      return count > 1;
  },

   

 

왼상 -> 오른하 대각선 중복 체크하기

 

왼쪽 상단에서 오른쪽 하단으로 내려가는 대각선의 중복을 체크하는 매소드는 다음과 같다. S.O.S의 간단한 풀이 보고 미쳤다 이런 생각 어떻게 하냐고...!! 좌절....후..! 다음번에 이런 문제를 만나게 된다면 이렇게 써먹을 것이란 마음을 담아 기록한다...! 후..! 나름 규칙 찾았다고 기뻐했는데...! 아무것도 아니였어...(시무룩)

 

hasMajorDiagonalConflictAt: function(majorDiagonalColumnIndexAtFirstRow) {
// 좌측상단에서 시작해서 우측하단으로 내려가는 대각선을 검사합니다.
      const size = this.get("n");
      let count = 0;
      let rowIdx = 0;
      let colIdx = majorDiagonalColumnIndexAtFirstRow;

      for (; rowIdx < size && colIdx < size; rowIdx++, colIdx++) {
// for문에서 선언부가 불필요하므로 바로 ; 조건으로 넘어갑니다.
// 0~n,parameter~n까지 두 조건을 반복하면서 증가시킵니다.
        if (colIdx >= 0) {
          const row = this.get(rowIdx);

          count += row[colIdx];
// for문을 돌면서 // 0,0 / 1,1 / 2,2 / 3,3 / 4,4 이런식으로 검사하게됩니다.
        }
      }

      return count > 1;
    },

아 이런 생각 어떻게 하냐고요...ㅜㅜ 헝.....ㅜㅜ (출처 : 코드스테이츠)

나는 대각선을 기점으로 대각선 / 역삼각형 / 정삼각형으로 나눠서 가로열과 세로열이 변화하는 규칙을 나눠 보았다.

hasMajorDiagonalConflictAt: function(majorDiagonalColumnIndexAtFirstRow) {
      let result = 0;
      let n = this.attributes.n;
      let major = majorDiagonalColumnIndexAtFirstRow;
      if (major > 0) {
        for (let i = 0; i < n - major; i++) {
          this.get(i)[major + i] ? result++ : result;
        }
      }
      if (major === 0) {
        for (let i = 0; i < n; i++) {
          this.get(i)[i] ? result++ : result;
        }
      }
      if (major < 0) {
        major = -major;
        for (let i = 0; i < n - major; i++) {
          this.get(major + i)[i] ? result++ : result;
        }
      }
      return result >= 2 ? true : false;
    },

 

 

 

 

 

할 일

=> Underscore 기능 다시 공부하기!!!!

=> 백본 특징 마지막 페이지 다시 보기 (여기 클릭)

 

 

 

 

 

반응형

'2. 우당탕탕 개발자 > 2-1. 공부기록' 카테고리의 다른 글

10Jan2020 TIL  (0) 2020.01.11
09Jan2020 TIL  (0) 2020.01.10
01Jan2020 TIL  (0) 2020.01.02
30Dec2019 TIL  (0) 2019.12.31
29Dec2019 TIL  (0) 2019.12.29

댓글