이제 Lv 0은 그만 풀 때가 된 것 같아요
그래서 Lv 1 문제들을 정답률이 높은 순서대로 풀기로 했습니다.
근데 또 정답률 높은 문제들은 너무 쉽더라고요
레벨이 중요한게 아니라 정답률이 중요한 느낌...
암튼 적절히 섞어서 풀자~ 가 결론입니다



function solution(board, moves) {
const result = [];
let answer = 0;
for (let i = 0; i < moves.length; i++) {
let j = 0;
while(j < board.length && board[j][moves[i] - 1] === 0) {
j++;
}
if (j < board.length) {
result.push(board[j][moves[i] - 1]);
board[j][moves[i] - 1] = 0;
if(result.length >= 2 && result[result.length - 2] === result[result.length - 1]) {
result.pop();
result.pop();
answer += 2;
}
}
}
return answer;
}
그래도 문제는 꽤나 간단하더라구요
인형뽑기 + 애니팡? 그런 느낌입니다
인형을 뽑아서 쌓고, 만약 똑같은 인형끼리 붙으면 인형을 없애버리면 됩니다!
먼저 떠올린 건, 기존에 하던 것 처럼 2차원 배열 안의 1차원 배열에 먼저 접근하고, 1차원 배열의 인덱스에 접근하는 게 아니라 1차원 배열들의 같은 인덱스에 접근해야 한다는 것입니다.

이렇게 찍어놓고 보니 더 쉽더라구요
그 다음은 인형을 뽑아야 하니, while문을 사용하여 0이 아닌 수가 나올때 까지 들어가주고, 0이 아닌 숫자가 나온다면 해당 위치의 숫자를 0으로 바꾸고 result 배열에 넣어줍니다.
여기서 주의해야 할 게, while문에 j < board.length 이게 없으면 해당 위치에 0밖에 없을 경우 무한루프가 발생할 수 있다는 점입니다.
마지막으로 result 배열에서 끝에 두 숫자가 같다면 없애야하니 pop을 두 번 사용했습니다. 다른 좋은 방법이 있을 거 같긴 한데 해결이 먼저였기 때문에...!

function solution(s) {
let result = s.split(' ').map(x => parseInt(x));
return Math.min(...result) + ' ' + Math.max(...result);
}
가장 쉬운 2레벨 문제였습니다. 간단해보였지만, 문법적으로 자꾸 헷갈리는 점들 때문에 생각만큼은 쉽게 안풀렸어요
Math.min, Math.max는 개별 인자들을 받아야하기 때문에, 스프레드 연산자를 붙여서 배열을 펼쳐야 한다는 것
parseInt는 result.parseInt() 이런 식으로 배열에 사용할 수 없기 때문에, map으로 각 인자들을 하나씩 바꿔줘야 한다는 것
을 알 수 있었습니다.