알고리즘 문제 해설
https://programmers.co.kr/learn/courses/18
function solution(n) {
let sum = 0;
while (n > 0) {
sum += n % 10;
n = Math.floor(n / 10)
}
return sum
}
function solution(n) {
return (n + '').split("").reduce((acc, cur) => +acc + +cur)
}
function solution(arr) {
const l = arr.length
const max = Math.max(...arr)
return l === max ? true : false
}
function solution(arr) {
const l = arr.length
for (let i = 1; i <= l; i++) {
if (!arr.includes(i))
return false
}
return true
}
function solution(arr) {
arr.sort()
const l = arr.length
for (let i = 0; i < l; i++) {
if (arr[i] !== i + 1) return false
}
return true
}
function solution(v) {
const x = []
const y = []
v.forEach(item => {
const [a, b] = item
x.push(a)
y.push(b)
})
const xx = deleteDup(x)
const yy = deleteDup(y)
return [...xx, ...yy]
}
function deleteDup(arr) {
for (let i = 0; i < arr.length; i++) {
for (let j = 0; j < arr.length; j++) {
if (i !== j && arr[i] == arr[j]) {
arr.splice(i, 1)
arr.splice(j - 1, 1)
}
}
}
return arr
}
function solution(v) {
const x = []
const y = []
v.forEach(item => {
const [a, b] = item
x.push(a)
y.push(b)
})
const xx = deleteDup(x)
const yy = deleteDup(y)
console.log(xx, yy);
// return [...xx, ...yy]
}
function deleteDup(arr) {
const q = {}
arr.forEach(item => {
q[String(item)] = (q[String(item)] + 1 || 1);
})
for (let key in q) {
if (q[key] == 1) return key
}
}
function solution(board)
{
let result = 0;
let resultArr = board.slice();
//board의 현재값이 1일경우 왼쪽상단 ,위쪽 ,왼쪽 값중에 가장 작은 값..
for(let i=0;i<board.length;i++){
for(let j=0;j<board[i].length;j++){
if(board[i][j] ===1){
if(i-1 < 0 || j-1 <0 ){
resultArr[i][j] = board[i][j];
result = Math.max(resultArr[i][j], result);
continue;
}
resultArr[i][j] = Math.min(board[i-1][j], board[i][j-1], board[i-1][j-1]) + board[i][j];
result = Math.max(resultArr[i][j], result);
}
}
}
return Math.pow(result,2)
}
참고
한 줄이면서, 모든 값이 0일 경우 ex) [[0,0,0,0]]
=> 기대값 0, 결과값 1 (실패)
function solution(arr) {
const x = arr.length
const y = arr[0].length
let answer = 0;
if (x == 1 || y == 1) return 1
for (let i = 1; i < x; i++) {
for (let j = 1; j < y; j++) {
if (arr[i][j] > 0) {
arr[i][j] = Math.min(arr[i - 1][j], arr[i][j - 1], arr[i - 1][j - 1]) + 1
}
answer = answer < arr[i][j] ? arr[i][j] : answer
}
}
return Math.pow(answer, 2)
}
function solution(arr) {
let l = arr.length
for (let i = 1; i < l; i++) {
for (let j = 0; j < 4; j++) {
const pastArr = []
arr[i - 1].forEach((item, index) => {
if (index !== j) pastArr.push(item)
})
const pastMax = Math.max(...pastArr)
arr[i][j] += pastMax
}
}
return Math.max(...arr[l - 1])
}