(1).백준 9455번 박스는 박스를 쌓는다고 할 떄의 이동거리를 구해줘야 하는 문제였다.

 

이번에도 세로 형태로 구해줘야 해서 for문 순서를 바꿔주고 쌓였을 때의 총 이동거리와

쌓이지 않은 값의 이동거리를 기본 위치 기준으로 다 계산해주기 위해서

쌓이지 않은 값은 현재 위치를 다 더해주고 쌓인 기준값은 박스 개수를 구해준 다음

calculate을 의도한 cal 함수에 담아서 1부터 n개까지 더한 값만큼의 이동한 값을 뺴는 방식으로 처리했고

해당 row들의 총 합을 result에 담아서 출력했다.

const input = `3
5 4
1 0 0 0
0 0 1 0
1 0 0 1
0 1 0 0
1 0 1 0
3 3
1 1 1
1 1 1
0 0 0
5 6
1 0 1 1 0 1
0 0 0 0 0 0
1 1 1 0 0 0
0 0 0 1 1 1
0 1 0 1 0 1`.split('\n').map(el => el.split(' ').map(Number))

const cal = (x) =>{
    let sum = 0
    for(let i = 1 ; i <= x ; i++){
        sum += i
    }
    return sum
}

for(let i = 1 ; i < input.length ; i++){
    const [x,y] = input[i]
    let result = 0

    for(let k = 0 ; k < y ; k++){
        let count = 0
        let sum = 0
        for(let j = i+1 ; j <= i+x ; j++){
            if(input[j][k]){
                count++
                sum += i + x - j + 1
            }
        }
        result += (sum - cal(count))
    }

    console.log(result)
    i += x
}

'회고' 카테고리의 다른 글

[개발일지] - 920  (0) 2026.01.19
[개발일지] - 919(주말)  (0) 2026.01.18
[개발일지] - 916  (0) 2026.01.16
[개발일지] - 915  (0) 2026.01.15
[개발일지] - 914  (0) 2026.01.14

+ Recent posts