(1).백준 5866번 Meet and Greet는 두 마리의 소가 이동하고 있을 때
소들이 교차하는 시점이 몇번인지를 묻는 문제였다.
간단하게 생각하면 소가 두마리 뿐이기 때문에 소들의 위치 차이를 index로 두고
해당 값이 0이 될 때마다 출력하는 방식으로 진행했지만 오답이 나왔고
같은 방향으로 진행해서 index가 0인 상태에서는 에러인 것으로 판단했기 때문에
서로 이동 방향이 같은 경우에는 count를 증가시키지 않는 방식으로 수정하니 정답처리가 되었다.
하나씩 내부 for문을 사용하면 뭔가 지저분할 것 같고
concat을 사용해서 추가하는 것도 뭔가 기분 나빴는데
push를 사용하면서 Array를 사용하는 것도 지저분해 보이긴 하지만
나름 시간복잡도도 나쁘지 않고 그럭저럭인 사용일 것 같다.
평소에는 for문과 쓰던 메서드만 사용했지만
여러가지 메소드를 사용하는게 좋을 것 같아서 조금씩이나마 더 찾아보고 있는데
js에서 사용되는 중요 메소드들은 다 자유자재로 쓸 수 있도록 조금씩 확인해봐야겠다.
const input = `4 5
3 L
5 R
1 L
2 R
4 R
1 L
3 L
4 R
2 L`.split('\n')
const [a, b] = input.shift().split(' ').map(Number)
const arr1 = []
const arr2 = []
let index = 0
let count = 0
for(let i = 0 ; i < input.length ; i++){
const [num, way] = input[i].split(' ')
if(i < a){
arr1.push(...Array(Number(num)).fill(way == 'L' ? -1 : 1))
}
else{
arr2.push(...Array(Number(num)).fill(way == 'L' ? 1 : -1))
}
}
for(let i = 0 ; i < Math.max(arr1.length, arr2.length) ; i++){
if(i < arr1.length){
index += arr1[i]
}
if(i < arr2.length){
index += arr2[i]
}
if(index == 0 && arr1[i] + arr2[i] != 0){
count++
}
}
console.log(count)
'회고' 카테고리의 다른 글
[개발일지] - 588 (0) | 2025.02.10 |
---|---|
[개발일지] - 587(주말) (0) | 2025.02.09 |
[개발일지] - 585 (0) | 2025.02.07 |
[개발일지] - 584 (0) | 2025.02.06 |
[개발일지] - 583 (0) | 2025.02.05 |