1.정규화(Normalization)는 중복된 데이터를 없애는 것이다.
정규화를 통해 불필요한 데이터를 줄이고 무결성을 지키고
테이블 구성을 논리적으로 만들 수 있으며
정리된 테이블 구조 확장이 용이해진다.

정규화에는 일반적으로 아래의 1~3단계까지 적용된다.

1 정규화 - 모든 도메인이 원자값으로 되어있어야 하며 반복되는 그룹이 없고
          기본키를 통해 각 집합을 고유하게 식별할 수 있어야 한다.
          
2 정규화 - 하나의 키로 다른 컬럼을 결정할 수 있어야 한다.
          (a로 1임을 알 수 있다면 b로도 1임을 알 수 있어야 한다.)

3 정규화 - 이행적 종속을 없앤다. 기본키가 아닌 속성은 기본키에 의존해야 한다.

 





(1).백준 4562 No Brainer는 좀비가 뇌를 필요치 이상으로 먹을 수 있는지
확인한 다음 경우에 따라 문자열을 출력하는 문제로
입력값을 split('\n')으로 받은 다음 [a,b] = arr 처럼 구조분해할당을 해 처리했다.

let input = `3
4 5
3 3
4 3`.split('\n')

let result = []
for(let i = 1 ; i < input.length ; i++){
    let [a,b] = input[i].split(' ').map(Number)
    if(a < b){
        result.push('NO BRAINS')
    }
    else{
        result.push('MMM BRAINS')
    }
}

console.log(result.join('\n'))



(2).프로그래머스 귤 고르기는 여러가지 사이즈의 귤 사이에서 최저 종류(사이즈)의 귤로 x개를 만족시키는 한도를 찾는 문제였다.
객체에 각각 사이즈별로 갯수를 담은 다음
갯수가 많은 종류부터 카운트해 만족하는 갯수가 되면 종류 카운팅을 종료했다.

function solution(k, tangerine) {
    let answer = 0;
    let sum = 0
    let obj = {}
    let arr = []
    for(let i = 0 ; i < tangerine.length ; i++){
        if(obj[tangerine[i]]){
            obj[tangerine[i]]++
        }
        else{
            obj[tangerine[i]] = 1
        }
    }
    for(let key in obj){
        arr.push(obj[key])
    }
    arr.sort((a,b) => a-b)
    
    while(sum < k){
        sum += arr.pop()
        answer++
    }
    return answer
}



(3).프로그래머스 캐시는 LRU와 관련된 문제였다.
hit은 1, miss는 5의 시간이 걸릴 떄 실행시간을 구하는 것으로
큐를 캐시 사이즈만큼 관리하고
있던 수치가 나온 경우 기존에 있던 값은 지우고 새로 push하며
있지 않은 값이면 큐에서 제거한 다음 push하는 방식으로 해결했다.

캐시 사이즈가 0,1인 경우 문제가 생기거나
맨 앞글자만 반복적으로 제거하는 등의 문제가 생겨
캐시 사이즈, 조건에 따른 글자 제거 등을 체크해 해결했다.

function solution(cacheSize, cities) {
    let answer = 0;
    let lruArr = []
    for(let i = 0 ; i < cities.length ; i++){
        let str = cities[i].toUpperCase()
        let idx = lruArr.indexOf(str)
        if(idx !== -1){
            answer += 1
        }
        else{
            answer += 5
        }
        
        
        if(lruArr.length >= cacheSize){
            if(idx === -1){
                lruArr.shift()
            }
            else{
                lruArr.splice(idx,1)
            }
        }
        if(cacheSize){
            lruArr.push(str)
        }
        
    }
    return answer;
}

 

+ Recent posts