(1).백준 2399번 거리의 합은 각 포인트마다 다른 곳으로 이동할 때 드는 거리를 다 구해야 하는 문제였는데
처음에는 단순하게 전체를 다 순회하게 했지만
1만개로 n^2 해도 1억건 밖에 되지 않아 초당 10억건 이상 처리되서
이대로 등록해도 문제없을거라고 생각한 것과 다르게 시간초과로 에러가 발생해버렸다.
결국 정렬해서 부분합 방식으로 처리해서 해결할 수 있었는데
다시 한번 최적화가 성능에 얼마나 큰 영향을 줄 수 있는지 체감하는 기회가 됐다.
특히 최근에 대규모 처리로 인해 문제가 있는 엑셀 파일 자동 다운로드의 경우
렌더링 부담을 최적화하기 위해 일정 주기로만 갱신하던가
아니면 갱신 여부를 on/off로 처리하고 총 처리 수량만 실시간으로 확인하게 하는 등 개선이 가능할 것 같다.
// const input = `5
// 1 5 3 2 4`.split('\n')[1].split(' ').map(BigInt)
// let result = 0n
// for(let i = 0 ; i < input.length ; i++){
// for(let j = 0 ; j < input.length ; j++){
// let added = input[i] - input[j]
// result += (added > 0n ? added : added * -1n)
// }
// }
// console.log(String(result))
const input = `5
1 5 3 2 4`.split('\n')[1].split(' ').map(BigInt).sort((a,b) => a < b ? -1 : 1)
let result = 0n
let prefix = 0n
for(let i = 0; i < input.length; i++){
result += input[i] * BigInt(i) - prefix
prefix += input[i]
}
console.log(String(result * 2n))'회고' 카테고리의 다른 글
| [개발일지] - 857(주말) (0) | 2025.11.08 |
|---|---|
| [개발일지] - 856 (0) | 2025.11.07 |
| [개발일지] - 854 (0) | 2025.11.05 |
| [개발일지] - 853 (0) | 2025.11.04 |
| [개발일지] - 852 (0) | 2025.11.03 |
