회고

[개발일지] - 280

Happy Programmer 2024. 4. 5. 23:58

인터페이스를 진행하던 중 인터페이스 로그가 좀 안예쁘게 일렬로 찍히는 부분이 마음에 들지 않았고

requset 부분은 줄바꿈 처리가 된 상태로 들어오는 것을 보고 무슨 차이가 있는지 확인해봤는데

JSON.serialize(response).toString(), JSON.serializePretty(response).toString() 두가지가 존재했다.

 

이건 찍히는 로그에 따라서 어떤걸 쓸지 고민을 해야 할 것 같은데

serialize를 보자면 일렬로 너무 길어서 하나의 로그를 파악하기가 어렵고

serializePretty를 사용할 경우 아래로 길어지기 때문에 여러개의 로그 비교가 어렵다.

 

SQL 학습을 하던 도중 비교 부분이 문제가 발생했고

이걸 어떻게 조건 비교를 할 수 있을지 확인하다가 비트연산자가 떠올랐다.

 

비트연산자는 아래와 같이 동작하는데

복잡해보이지만 사실 &만 사용해도 공통분모를 찾을 수 있고

A 또는 B의 공통분모와 A 또는 B를 비교할 경우 어떤게 속해있는지 간단히 알 수 있다.

& => AND 1010 & 0111 -> 0010

| => OR 1010 | 0111 -> 1111

^ => NOR 1010 ^ 0111 -> 1101 ~ =>

Reverse ~00001000 -> 11110111
(맨 앞자리 보수 1)

 

SQL에서 비교 또는 출력을 위해 변경도 자주 해야 했는데 아래와 같이 진수를 바꿀 수도 있었다.

CONV(NUM, FROM, TO)

CONV(15, 10, 2) 15 → 1111

 

 

(1).백준 26264번 빅데이터? 정보보호!는 문자열에 빅데이터와 시큐리티라는 문자열이

일렬로 잔뜩 늘어서 있을 때 어떤 문자열 그룹이 더 많은지 출력해야 하는 문제였다.

 

처음에는 count를 진행해야 하나 싶었는데 지금 생각해보면 문자열 위치로 시작 글자가 b, i를 체크한 다음

b일 경우 7칸 이동, s일 경우 8칸 이동 후 체크를 반복했으면 자를 필요도 없었을 것 같다.

const input = `6
bigdatabigdatabigdatasecuritysecuritysecurity`.split('\n')
const dataList = input[1].split('security').join('S').split('bigdata').join('B')

let bigdataCount = 0
let securityCount = 0
for(let i = 0 ; i < dataList.length ; i++){
    if(dataList[i] == 'B'){
        bigdataCount++
    }
    else{
        securityCount++
    }
}

if(bigdataCount > securityCount){
    console.log('bigdata?')
}
else if(bigdataCount == securityCount){
    console.log('bigdata? security!')
}
else{
    console.log('security!')
}