목록~2022 작성 글 (113)
상권's
문제 세로와 가로의 길이가 각각 M, N인 방의 지도가 2차원 배열로 주어졌을 때, 1은 장애물을 의미하고 0 이동이 가능한 통로를 의미합니다. 로봇은 한 번에 임의의 k칸 직진과 90도 회전 중 1가지 동작을 할 수 있다. 로봇의 현재 위치와 방향, 목표 지점과 방향이 함께 주어집니다. 이 때, 방향은 위쪽이 1, 오른쪽이 2, 아래쪽이 3, 왼쪽이 4로 주어집니다. 로봇이 목표 지점까지 도달해 목표 방향으로 회전하는 데 필요한 동작의 수를 리턴해야 합니다. 입력 인자 1 : room 배열을 요소로 갖는 배열room.length는 Mroom[i]는 number 타입을 요소로 갖는 배열room[i].length는 Nroom[i][j]는 세로로 i, 가로로 j인 지점의 정보를 의미room[i][j]는 0 ..
문제 세로와 가로의 길이가 각각 M, N인 마을지도가 배열로 주어졌을 때, '1'은 주민이 있는 집을 의미하고 '0'은 주민이 없는 땅을 의미합니다. 이 마을은 소문이 시작되면 하루에 상하좌우 한 칸 바로 옆에 있는 집으로 퍼집니다. 특정 주민의 집 (R, C)으로부터 어떤 소문이 시작될 경우, 마을 전체로 소문이 퍼지는데 걸리는 시간(일)을 리턴해야 합니다. 주의사항 M, N은 100 이하의 자연수입니다.row, col에는 항상 주민이 살고 있습니다.모든 집은 연결되어 있습니다. 즉, 한 집에서 다른 집으로 가는 경로가 항상 존재합니다.village를 그래프로 구현하는 함수가 주어집니다. direction으로 상하좌우를 움직일 수 있는 방법을 제시해준다. count라는 변수를 만들어서 일수를 체크한다...
-오늘의 코플릿 2021.11.15- 정수를 요소로 갖는 배열을 입력받아 다음의 조건을 만족하는 LSCS*를 리턴해야 합니다. LSCS: 주어진 배열의 연속된 부분 배열*의 합을 구한다고 할 때, 이 중 가장 큰 값(Largest Sum of Contiguous Subarray) 연속된 부분 배열들: 배열 [1,2,3]의 연속 부분 배열은 [1], [1, 2], [1, 2, 3], [2], [2, 3], [3] 입니다. 주의사항 배열의 모든 요소가 음수인 경우도 있습니다. 가장 기본적인 방법은 멱집합을 통해서 배열을 다 만든 다음에, 해당 배열들의 모든 요소들을 더하고, 가장 큰 값을 리턴한다. 첫 수도코드 => 처음 문제를 봤을 때, 연속 된 부분 배열에 대한 예시가 멱집합을 구현해 놓은 거랑 똑같아 ..
한 주가 얼마나 빠르게 지나가는 지 섹션 2 HA 회고를 쓸 때가 엊그제 같은데 어느새 일주일이 지났습니다. HA에 이후 시간에 여유가 있어서 푹 쉬어서 그런지 이번 주는 유난히 피곤한 한 주였습니다. 이번 주는 리눅스 사용 권한, 환경 변수, 코딩 테스트 준비(시간 복잡도, 순열/조합, GCD/LCM, DP 등등), 데이터베이스 기초에 대해서 학습했습니다. 리눅스 학습할 때 dotenv에 대해서 이해는 했지만 어떻게 사용하는 지 감이 잡히질 않았는데, 데이터베이스를 학습하면서 실제로 사용해보고 이해했습니다. 데이터베이스도 일과 시간 이후에 조금씩 학습했던 게 있어서인지 낯설지 않고 쉽게 이해했습니다. 코딩 테스트 학습은 알고리즘에 많은 시간을 투자한 만큼 실력이 늘었다라는 걸 느꼈습니다. DP를 제외하..
-오늘의 코플릿 2021.11.12- 문제 세로와 가로의 길이가 각각 M, N인 방의 지도가 2차원 배열로 주어졌을 때, 1은 장애물을 의미하고 0 이동이 가능한 통로를 의미합니다. 로봇은 지도 위를 일분에 한 칸씩 상하좌우로 이동할 수 있습니다. 로봇의 위치와 목표 지점이 함께 주어질 경우, 로봇이 목표 지점까지 도달하는 데 걸리는 최소 시간을 리턴해야 합니다. 인자 2 : src number 타입을 요소로 갖는 배열 인자 3 : dst number 타입을 요소로 갖는 배열 //상 하 좌 우에 해당하는 움직임을 배열로 만든다 //출발지부터 시작해서 => 상 하 좌 우 배열을 돈다 undefined일 경우 return; //undefined가 아닐 경우 count 1 제일 먼저 도착을 하는 게 있으면 바..
-오늘의 코플릿 2021.11.11- radixSort 문제 정수를 요소로 갖는 배열을 입력받아 오름차순으로 정렬하여 리턴해야 합니다. 주의사항 기수 정렬을 구현해야 합니다.arr.sort 사용은 금지됩니다. 입력으로 주어진 배열은 중첩되지 않은 1차원 배열입니다. 힌트 기수 정렬(radix sort)은 내부적으로 계수 정렬(counting sort)을 사용합니다.계수 정렬을 먼저 학습하고, 어떤 경우에 기수 정렬을 사용하는지 학습하도록 합니다. // DP 에서 학습했던 거처럼 진행을 하면 안될까? // arr에서 maxNum을 구한다. // maxNum을 구해서 해당 수만큼 0으로 채워진 배열을 만든다. zeroArr // arr를 돌면서, 해당 숫자의 인덱스 부분을 1로 채워준다. // zeroArr..
-오늘의 코플릿 2021.11.10- 2차원 M x N 배열을 나선형(spiral)으로 순회해야 합니다. 입력 인자 1 : matrix 세로 길이(matrix.length)가 M, 가로 길이(matrix[i].length)가 N인 2차원 배열matrix[i]는 string 타입을 요소로 갖는 배열matrix[i][j].length는 1 출력 string 타입을 리턴해야 합니다. 주의사항 순회는 좌측 상단 (0,0)에서 시작합니다.배열의 모든 요소를 순서대로 이어붙인 문자열을 리턴해야 합니다. 오늘 문제는 수도 코드 작성도 어려웠습니다. 스택이나 큐, 길이만큼 먼저 움직이는 방향에 대해서 하드코딩 해놓고 코드를 구현해볼까도 했지만 쉽지 않았습니다. 구글링을 통해서 외곽을 먼저 돌게 되면, 내부에는 외곽이랑..
-오늘의 코플릿 2021.11.09- 2차원 N x N 배열을 시계 방향으로 90도 회전시킨 배열을 리턴해야 합니다. 인자 1 : matrix 가로 길이(matrix[i].length)와 세로 길이(matrix.length)가 모두 N인 2차원 배열matrix[i][j]는 number 타입 2차원 배열을 리턴해야 합니다. Advanced 세로와 가로의 길이가 각각 M, N인 2차원 M X N 배열을 시계방향으로 90도씩 K번 회전시킨 배열을 리턴해 보세요. 회전수가 두 번째 입력으로 주어집니다. // 90도로 회전시키면 각 행의 0번째 요소가 리턴되는 새로운 matrix 0번째 행의 요소들이 된다. // 각 행의 1번째 요소가 1번째 행의 요소들이 된다. // 행의 길이만큼 반복문을 돌려서 집어넣어준다...