내일배움캠프 Node.js 본캠프 44일차

김선우·2024년 10월 15일
post-thumbnail

알고리즘 문제 풀어보기

바탕화면 정리

문제 설명

제한 사항

1 ≤ wallpaper의 길이 ≤ 50
1 ≤ wallpaper[i]의 길이 ≤ 50
wallpaper의 모든 원소의 길이는 동일합니다.
wallpaper[i][j]는 바탕화면에서 i + 1행 j + 1열에 해당하는 칸의 상태를 나타냅니다.
wallpaper[i][j]는 "#" 또는 "."의 값만 가집니다.
바탕화면에는 적어도 하나의 파일이 있습니다.
드래그 시작점 (lux, luy)와 끝점 (rdx, rdy)는 lux < rdx, luy < rdy를 만족해야 합니다.

풀이 코드

function solution(wallpaper) {
    var X = [];
    var Y = [];

    for (i = 0; i < wallpaper.length; i++){
        for( j = 0; j < wallpaper[i].length; j++){
            if(wallpaper[i][j] === "#"){
                Y.push(i);
                X.push(j);
            }
        }
    }

    X.sort((a, b) => a - b);
    Y.sort((a, b) => a - b);

    return [Y[0], X[0], Y[Y.length - 1] + 1, X[X.length - 1] + 1];
}

풀이 과정

좌표를 정리해줄 X, Y배열을 생성한다. 이후 이중 반복문을 통해 파일(#)이 위치한 위치를 찾고 파일을 찾게 되면 i값은 Y 배열에, j값은 X 배열에 넣어준다. => i값 = y좌표값, j값 = x좌표값
이후 구한 값을 오름차순으로 정렬 해주고 [가장 작은 y값(가장 상단 좌표 값), 가장 작은 x값(가장 좌측 좌표 값), 가장 큰 y값(가장 하단 좌표 값), 가장 큰 x값(가장 우측 좌표 값)] 순으로 return 해줘야 하므로, 각 배열의 첫번째 수와 마지막 수를 정렬해주면 되는데 파일을 포함해야하기 때문에 마지막 수에는 +1을 해준다.

개인과제 - 리얼 타임 과제 해설

  • 기존 과제 수행시에는 assets폴더(데이터 테이블)가 public 밖에 있었는데 public안으로 넣어줬다 - '서버와 클라이언트는 같은 게임 데이터 테이블을 보고 있다.'
    => 10점이 되었을때 스테이지가 2로 넘어간다는 사실을 서버만 알고 클라이언트는 모를 경우 유저가 제대로된 플레이를 할 수 없다.

  • 보통 데이터 테이블을 관리할 때 서버에서 관리하는 정보, 클라이언트에서 관리하는 정보, 서버와 클라이언트 둘 다 사용하는 정보를 따로따로 구분해서 구분할 수 있는 장치를 두고 관리하기도 함.

팀 프로젝트

register.html에 회원가입 API를 호출하고 비밀번호 확인에 대한 검증 추가.

로그인에 성공하면 토큰을 획득


로그인 하지 않고 플레이 버튼을 누르면 토큰이 없어서 로그인이 진행되지 않게 작성.

0개의 댓글