회고

[개발일지] - 412(주말)

Happy Programmer 2024. 8. 18. 23:34

(1).백준 2467번 용액은 Class5에 있는 문제로 어제부터 슬슬 찔러보고 있는 문제 중 하나였다.

 

이건 5단계 문제 치고 상단히 간단하게 풀 수 있었는데

여러개의 정렬된 음과 양의 용액의 특성값(산성,알칼리성)이 제공될 때

합이 가장 0에 가까운 쌍을 출력해야 하는 문제였다.

 

양 끝에서부터 0보다 클 경우 양수쪽을 줄이는 방법으로 우측 인덱스를 줄이고

0보다 작을 경우 음수쪽을 줄이는 방법으로 좌측 인덱스를 줄여서 폭을 좁혔고

그 차이를 따로 기입하면서 최소값일 경우에만 요청하는 출력값대로 result에 값을 저장하는 방식으로 해결했다.

const input = `4
-100 -2 -1 103`.split('\n')[1].split(' ').map(Number)

let left = 0
let right = input.length - 1
let min = Infinity
let result = ''

while(left != right){
    let sum = input[left] + input[right]
    if(Math.abs(sum) < min){
        min = Math.min(Math.abs(sum), min)
        result = `${input[left]} ${input[right]}`
    }
    if(sum >= 0){
        right--
    }
    else{
        left++
    }
}

console.log(result)