8, 9일차는 풀만했는데 10일차 ... 어려워 .. 다시 풀어봐야 한다.
문제 8. 통증
(async () => {
let rl = readline.createInterface({ input: process.stdin });
for await (const line of rl) {
let result = 0;
const items = [14, 7, 1];
let value = line;
for (let i=0; i<3; i++) {
if (value / items[i] === 0) continue;
result += Math.floor(value / items[i]);
value = value % items[i]
}
console.log(result)
rl.close();
}
process.exit();
})();
능력치가 큰 아이템부터 먹여보고 남는 아이템도 먹여보는 방식으로 풀었다.
문제 9. 폭탄 구현하기 (2)
let input, N, K
let result = 0
const landList = []
const bombList = []
rl.on('close', () => {
const direction = [[0, 0], [-1, 0], [1, 0], [0, -1], [0, 1]];
for (let i=0; i<input[0]; i++) {
for (let j=0; j<input[0]; j++) {
if (landList[i][j] === "@") continue;
if (landList[i][j] === "#") continue;
landList[i][j] = Number(landList[i][j])
}
}
bombList.map((bomb) => {
bomb = [Number(bomb[0]), Number(bomb[1])]
direction.map((d) => {
nextI = bomb[0]-1 + d[0];
nextJ = bomb[1]-1 + d[1];
if (nextI < 0 || nextI >= input[0] || nextJ < 0 || nextJ >= input[0]) return;
if (landList[nextI][nextJ] === "#") return;
if (landList[nextI][nextJ] === "@") {
landList[nextI][nextJ] = -2
} else if (landList[nextI][nextJ] < 0) {
landList[nextI][nextJ] -= 2
} else {
landList[nextI][nextJ] += 1
}
if (result < Math.abs(landList[nextI][nextJ])) {
result = Math.abs(landList[nextI][nextJ])
}
})
})
console.log(result)
})
입력 받는 부분..삭제
폭탄 리스트 대로 터트리고 배열 값 +1해서 바꿔주고 했는데
난 @인 부분 +2씩 해줘야 하는게 골치아팠다.
@인 자리를 간단하게..쉽게..깔끔하게... 어떻게 알 수 있을까.. 하다가
@였던 곳은 계속 -2를 해주고 마지막에 값 비교 할 때는 절댓값으로 보면서 처리 해줬다.
'main > Algorithm' 카테고리의 다른 글
구름톤 챌린지 15일차 일기 (0) | 2023.09.03 |
---|---|
구름톤 챌린지 12일차 일기 (0) | 2023.08.29 |
구름톤 챌린지 7일차 일기 (0) | 2023.08.23 |
구름톤 챌린지 5일째 멸망한 일기.. (0) | 2023.08.19 |
구름톤 챌린지 3일째 시작한 일기 (0) | 2023.08.17 |