μκ°
ν ..... λ무 μ΄λ €μ κ³ λ¬Έμ λ₯Ό μ΄ν΄νλ κ²λΆν° νλ€μμ΅λλ€. νΈμ¦κΉμ§λ λͺ» νμμ§λ§ Rookκ³Ό λκ°μ μ
κ΄ν κ²μ μλ£ν΄λ³΄μμ΅λλ€. solvesλ λͺ» νμλ€λ λΉλ°.....
hasRowConflictAt: function (rowIndex) { // ν μ체μ
// console.log("hasRow: ",this.attributes)
let chass = this.attributes[rowIndex];
// console.log(this.attributes) μ°μ΄λ³΄λ©΄ μ μ¬λ°°μ΄λ‘ μλκ° λμ΅λλ€.
// μ¬κΈ°μ, μ°¨κ·Όμ°¨κ·Ό κ°μΌν©λλ€.
// {0: Array(4), 1: Array(4), 2: Array(4), 3: Array(4), n: 4}
let count = 0;
// console.log('first',chass)
for(let i = 0 ; i < chass.length; i++){
// κ° νμ λλ©΄μ 1μ μ°Ύκ²λλ©΄ countλ₯Ό λλ €μ 2κ° λλ©΄ trueλ₯Ό ν΄μ Έμ λΉ¨κ°κ² λ§λλλ€.
if(chass[i] === 1){ // 0 1 0 0
count++; // 0 0 0 1
} // 1 0 0 0
} // 0 0 1 0
return count > 1; // fixme
}
hasAnyRowConflicts: function () { // ν μ체μμ 체ν¬
let isConflict = false; // _.every μ²λΌ νλ€κ³ μκ°νμμ΅λλ€.
let chassLength = this.attributes.n; // κΈΈμ΄λ§ κ°μ Έμ΅λλ€.
for (let i = 0; i < chassLength; i++) { // μμμ μ¬μ©νκ²μ ν λλ‘ κ²°κ³Ό κ°μ κ°μ Έμ΅λλ€.
this.hasRowConflictAt(i) && (isConflict = true);
}
return isConflict; // fixme
},
μΈλ‘ νμ μ²μμ μ΄ν΄νλλ° μ‘°κΈ μκ°μ΄ κ±Έλ Έμ΅λλ€. key κ°μ μμ§μ¬ μΈλ‘λ‘ κ°λ€κ³ μκ°νμμ΅λλ€.
hasColConflictAt: function (colIndex) {
let chass = this.attributes;
// console.log(chass)
let count = 0;
for(let key in chass){ // key 0, 1, 2, 3
if(chass[key][colIndex] === 1){
count++
}
}
return count > 1; // fixme
},
hasAnyColConflicts: function () { // μμ νλκ±°μ λκ°μ΄ νλ©΄ λμλ€.
let isConflict = false;
let chassLength = this.attributes.n;
for (let i = 0; i < chassLength; i++) {
this.hasColConflictAt(i) && (isConflict = true);
}
return isConflict; // fixme
},
i(ν)μμ j(μ΄)λΉΌμ
hasMajorDiagonalConflictAt: function (majorDiagonalColumnIndexAtFirstRow) {
let chass = Object.values(this.attributes)
let chassLength = chass[4]
let count = 0;
// console.log('top', majorDiagonalColumnIndexAtFirstRow)
for (let i = 0; i < chassLength; i++ ){
for (let j = 0; j < chassLength; j++) {
if(i - j === majorDiagonalColumnIndexAtFirstRow && chass[j][i]){
count++
}
}
}
// [0, 1, 2, 3] [0,0,0,1]
// [-1,0, 1, 2] [0,0,0,1]
// [-2,-1,0, 1] [1,0,0,0]
// [-3,-2,-1,0] [0,1,0,0]
return count > 1 // fixme
},
νΉμ λ Έλμμ μ λ§μ±μ μ κ²νκ³ , μ λ§νμ§ μμΌλ©΄ λ€μ λ Έλμ λΆλͺ¨λ‘ λμκ°μ λ€μ λ Έλμ λν
κ²μμ κ³μ νκ²λλ μ μ°¨ μ λλ€.
π λΈλΌμ°μ (Browse) μ¬λμ΄ λ³Ό μμλλ‘ λ²μν΄μ€. μΈμ΄λ₯Ό μ΄μ©ν΄μ μμ±νλ©΄ λΈλΌμ°μ μμ ν΄λ ν΄μ μ»΄ν¨ν°μ λ°μ΄λ리(2μ§μ)λ°μ΄ν°λ₯Ό λ겨μ€λλ€. μ²λ¦¬ν κ²μ λ€μ λΈλΌμ°μ μ 보μ¬μ€λλ€. (μλ°©ν₯ ν΅μ = κ΅¬κΈ ν¬λ‘¬, μ¬ν리) πΆ μλ² (Server) ν΄λΌμ΄μΈνΈ(κ³ κ°) μ DB(λκΈ°μ ) μ€κ°μ μ ν΅μ 체. μ 곡νλ 주체, ν΄λΌμ΄μΈ...
β μκ°λ³΅μ‘λ(time complexity) κΈ°λ³Έ κ°λ μ€νμκ°μ μ€ν νκ²½μ λ°λΌ λ€λ¦ λλ€.(νλμ¨μ΄, μ΄μ체μ , μΈμ΄, μ»΄νμΌλ¬ λ±) μ€ν μκ°μ μΈ‘μ νλ λμ μ°μ°μ μ€ν νμλ₯Ό μΉ΄μ΄νΈ ν©λλ€. μ°μ°μ μ€ν νμλ μ λ ₯ λ°μ΄ν°μ ν¬κΈ°μ κ΄ν ν¨μλ‘ ννν©λλ€. λ°μ΄ν° ν¬κΈ°κ° κ°λλΌλ μ€μ λ°μ΄ν°μ λ°λΌμ λ¬λΌμ§λλ€. μ΅μ μ κ²½μ° μκ°λ³΅μ‘λ(wo...
π§ N-queens μκ³ λ¦¬μ¦ μκ° ν ..... λ무 μ΄λ €μ κ³ λ¬Έμ λ₯Ό μ΄ν΄νλ κ²λΆν° νλ€μμ΅λλ€. νΈμ¦κΉμ§λ λͺ» νμμ§λ§ Rookκ³Ό λκ°μ μ κ΄ν κ²μ μλ£ν΄λ³΄μμ΅λλ€. solvesλ λͺ» νμλ€λ λΉλ°..... * 첫λ²μ§Έ ν λ°±νΈλ νΉ μ΄λ? νΉμ λ Έλμμ μ λ§μ±μ μ κ²νκ³ , μ λ§νμ§ μμΌλ©΄ λ€μ λ Έλμ λΆλͺ¨λ‘ λμκ°μ λ€μ λ Έλμ λ...
prototype μλ°μ€ν¬λ¦½νΈλ νλ‘ν νμ κΈ°λ° μΈμ΄λΌκ³ λΆλ¦½λλ€. μλ°μ€ν¬λ¦½νΈλ κ°μ²΄μ§ν₯μΈμ΄μ λλ€. κ·Έλ¦¬κ³ class λΌλ κ°λ μ΄ μμ΄μ ν¬λ‘ν νμ μΌλ‘ μμμ νλ΄λ΄λλ‘ ν©λλ€. νλ‘ν νμ κΈ°λ° μΈμ΄λ κ°μ²΄ μνμΈ νλ‘ν νμ μ μ΄μ©νμ¬ μλ‘μ΄ κ°μ²΄λ₯Ό λ§λ€μ΄ λ λλ€. μ΄λ κ² μμ±λ κ°μ²΄ μμ λ λ€λ₯Έ κ°μ²΄μ μνμ΄ λ μ μμ΅λλ€. μ€ν¬λ¦°μ·, 201...
1. 1μ£Όμ°¨ νκ²λ€ * sprintλ₯Ό 2κ°μ§λ₯Ό νμμ΅λλ€. (μΈλλ°, λ°μ΄ν°κ΅¬μ‘°); * checkpoint 10κ° * λΈλ‘κΉ 2. μμ μκ° μμ μκ°μ΄ λ§λ€κ³ λκΌμ§λ§ κΈλ°© κ°κ³ κΈλ°©κ°λ€κ³ ν΄μ κ·Έκ² λμ΄ μλκ³ λ³΅μ΅κ³Ό checkpointμ μ°μμ΄μμ΅λλ€. μ½λμ€ν μ΄μΈ κ΄κ³μ λΆλ€μ΄ μ½μ€μ νλ€μ μν΄μ κ°λ¨ν μ λ¬μ¬νμ΄λ μκ°μ¬νμμλ νμ...