목록프로그래머스 (3)
발전하는 개발자가 되자
프로그래머스 알고리즘 (java) 도둑질 프로그래머스 (도둑질) 도둑이 어느 마을을 털 계획을 하고 있습니다. 이 마을의 모든 집들은 아래 그림과 같이 동그랗게 배치되어 있습니다. 각 집들은 서로 인접한 집들과 방범장치가 연결되어 있기 때문에 인접한 두 집을 털면 경보가 울립니다. 각 집에 있는 돈이 담긴 배열 money가 주어질 때, 도둑이 훔칠 수 있는 돈의 최댓값을 return 하도록 solution 함수를 작성하세요. 코드리뷰 조건 1번째 집을 털면 마지막 집은 털지 못한다. 인접한 집은 털지 못한다. 풀이방향 인접한 집을 털지 못하니 1번집을 털 경우와 2번집을 털 경우 그리고 한 칸씩 띄워서 두개의 최대 값을 비교하면 된다 생각하고 문제를 풀었습니다. 하지만 두칸 건널 수도 있다는 경우를 생각..
프로그래머스 알고리즘 (java) 등굣길 프로그래머스 (등굣길) 가장 왼쪽 위, 즉 집이 있는 곳의 좌표는 (1, 1)로 나타내고 가장 오른쪽 아래, 즉 학교가 있는 곳의 좌표는 (m, n)으로 나타냅니다. 격자의 크기 m, n과 물이 잠긴 지역의 좌표를 담은 2차원 배열 puddles이 매개변수로 주어질 때, 학교에서 집까지 갈 수 있는 최단경로의 개수를 1,000,000,007로 나눈 나머지를 return 하도록 solution 함수를 작성해주세요. 코드리뷰 조건 최단거리를 가야하기 때문에 왼쪽 과 아래 밖에 못 움직인다. 웅덩이가 있는곳은 못 지나간다. 풀이방향 이차원 배열을 만들고 웅덩이를 표시하고 거기서부터는 예전 수학시간에 배운 최단거리를 구하는 방법처럼 구해봤습니다. 웅덩이는 -1 로 미리 ..
프로그래머스 알고리즘 (java) 정수 삼각형 프로그래머스 (정수 삼각형) 코드 리뷰 같은 삼각형의 꼭대기에서 바닥까지 이어지는 경로 중, 거쳐간 숫자의 합이 가장 큰 경우를 찾아보려고 합니다. 아래 칸으로 이동할 때는 대각선 방향으로 한 칸 오른쪽 또는 왼쪽으로만 이동 가능합니다. 예를 들어 3에서는 그 아래칸의 8 또는 1로만 이동이 가능합니다. 조건 맨위 부터 아래로 내려가며 숫자를 증가시킨다. 마지막 까지 내려가 가장 큰 수를 반환한다. 풀이방향 현재 위치의 값을 구할 때 이전 값이 필요합니다. 그래서 저는 배열을 만들었고 이전 배열과 현재 배열을 더하는 식으로 접근 했습니다. 그러다 보니 양쪽 끝부분은 가지수가 1개이고 사이 [j] 값 은 이전 [j], [j - 1] 값을 비교해 큰 값을 더했습..