본문 바로가기

알고리즘119

[프로그래머스 LV2] 리코쳇 로봇 (bfs) https://school.programmers.co.kr/learn/courses/30/lessons/169199 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명 리코쳇 로봇이라는 보드게임이 있습니다. 이 보드게임은 격자모양 게임판 위에서 말을 움직이는 게임으로, 시작 위치에서 목표 위치까지 최소 몇 번만에 도달할 수 있는지 말하는 게임입니다. 이 게임에서 말의 움직임은 상, 하, 좌, 우 4방향 중 하나를 선택해서 게임판 위의 장애물이나 맨 끝에 부딪힐 때까지 미끄러져 이동하는 것을 한 번의 이동으로 칩니다. 다음은 보드게임판을 나타낸 예시입.. 2023. 8. 29.
[프로그래머스LV2] 미로찾기 (bfs) 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 1 x 1 크기의 칸들로 이루어진 직사각형 격자 형태의 미로에서 탈출하려고 합니다. 각 칸은 통로 또는 벽으로 구성되어 있으며, 벽으로 된 칸은 지나갈 수 없고 통로로 된 칸으로만 이동할 수 있습니다. 통로들 중 한 칸에는 미로를 빠져나가는 문이 있는데, 이 문은 레버를 당겨서만 열 수 있습니다. 레버 또한 통로들 중 한 칸에 있습니다. 따라서, 출발 지점에서 먼저 레버가 있는 칸으로 이동하여 레버를 당긴 후 미로를 빠져나가는 문이 있는 칸으로 이동하면 됩니다. 이때 아직 레버를 당기지 않았더라도 출구가 있는.. 2023. 8. 29.
[프로그래머스 LV2] 게임 맵 최단거리 https://school.programmers.co.kr/learn/courses/30/lessons/1844?language=javascript 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제 설명 ROR 게임은 두 팀으로 나누어서 진행하며, 상대 팀 진영을 먼저 파괴하면 이기는 게임입니다. 따라서, 각 팀은 상대 팀 진영에 최대한 빨리 도착하는 것이 유리합니다. 지금부터 당신은 한 팀의 팀원이 되어 게임을 진행하려고 합니다. 다음은 5 x 5 크기의 맵에, 당신의 캐릭터가 (행: 1, 열: 1) 위치에 있고, 상대 팀 진영은 (행: 5, 열: 5.. 2023. 8. 28.
[프로그래머스 LV2] 피로도 https://school.programmers.co.kr/learn/courses/30/lessons/87946 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 완전탐색, dfs 배운점 탈출조건이 dfs안에 있을수도 있다 function solution(k, dungeons) { var answer = -1; // const min = Math.min(...dungeons.map((d) => d[0])); // 참여하기 위해 필요한 최소 최소필요 피로도 // 현재피로도, 방문한 던전 갯수, 미방문한 던전 function dfs(curr, step, res.. 2023. 8. 25.
[프로그래머스 LV2] 양궁대회 https://school.programmers.co.kr/learn/courses/30/lessons/92342 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 문제요점 k점에 더 많은 화살을 맞힌사람이 k점을 가져감 맞힌 갯수가 같을 경우 어피치가 가져감 둘다 k점에 못 맞힌경우 아무도 가져가지 않는다 최종점수가 더 높은 선수가 우승자, 단 같을 경우 어피치가 우승자 라이언이 어피치를 가장 큰 점수 차이로 이기기 위해 n발을 어떤 과녁에 맞혀야하는지를 구하시오 라이언이 지거나 비기는 경우는 -1리턴 작은 차로 어피치를 이겨야함 어피치의 화살갯수가 작은 .. 2023. 8. 25.
삼각형 만들기 주의점 push는 원래배열을 변경하기 때문에 push, pop하기전에 원래의 배열을 복사 해서 새로운 배열을 만든 뒤 ([...배열] 혹은 Array.from(배열)) push해서 변경한다 // push하기 전에 원래 값 저장 const beforePush = Array.from(curr); curr.push(selected); dfs(newRemained, curr); // 돌아온 뒤 원래값으로 돌아오기 curr = beforePush; // curr.pop(); !!!! 배열에서 한 값외의 배열을 선택하는 방법 1. filter: 새로운 배열을 반환한다. 배열.filter((e) => e !== selected); 2. splice a는 원래 배열을 변경하고, 자르고 남은걸 반환하니까 a를 복사한 b.. 2023. 8. 24.