Challenge
Careers
Class
Connect
로그인 후 문제풀이가 가능합니다.
문제 테스트 케이스가 부족합니다.
다른 분이 제기하시기도 하였지만, 문제에 있는 예를 들어서 한 번 더 확인해 보았어요. 노란 친구가 탐색을 한다고 했을 때, 88 + 99 를 한 결과 값이 파란 친구가 지난 길의 열매를 제외하고도 먹어진다면 => 그 다음 칸이 50 보다 크다고 했을 때 (51) 정답은 664가 되어야합니다. 근데 저는 틀릴 줄 알고, 한 번 방문 했던 경로는 다시 방문 못 하도록 설정 해놓고 제출하니까 맞다고 채점되네요..
문제 로직 질문입니다.
이 문제를 bfs로 해결하려면 어떻게 해야할까요? bfs로 접근하려고 하니까 visited 처리는 하면 안될 것 같고, 또 상하좌우에서 열매 크기가 같은 경우가 여러 칸 있는 경우를 다 큐에 넣으면 다른 사람이 해당 칸에 접근하지 못하네요.. 이 문제는 dfs로 접근하는 게 맞는 풀이일까요?
정답 기준을 변경해주세요.
3 1 1 100 1 1 1 1 1 100 1 2 2 위의 테스트 케이스를 실행할 때 201이 정답으로 나와야합니다. (2,2) -> (1,2) -> (2,2) -> (3,2) 의 순서로 이동해야 최대 양의 열매를 수확할 수 있는데 visited 배열을 통해 단순히 도착했던 나무를 방문하지 않는다는 조건으로 문제를 해결하여 103으로 실행결과가 나와도 통과합니다.
파이썬 이렇게 풀면 왜 틀리나요?
from collections import deque n, m = map(int, input().split()) farm = [] for i in range(n): farm.append(list(map(int, input().split()))) positions = [] for i in range(m): x, y = map(int, input().split()) positions.append([x - 1, y - 1]) dx = [-1, 0, 1, 0] dy = [0, 1, 0, -1] seconds = 3 def max_bfs(positions, farm): sec_3 = [] for i in positions: sec_3_i = [] queue = deque() queue.append([i, 0, farm[i[0]][i[1]]]) w...
C언어 코드 어딜 고쳐야 할지 감이 안와요,, 4시간 붙잡고 있었어요,,,
#include <stdio.h> #define MAX_N 10 int N, M; int board[MAX_N][MAX_N]; long long max_harvest = 0; void dfs(int x, int y, int step, long long sum, int visited[MAX_N][MAX_N]) { // 종료 조건: 3번 이동하면 종료 if (step == 3) { printf("%d ",sum); //if(max_harvest > sum) visited[nx][ny]=0; max_harvest = max_harvest > sum ? max_harvest : sum; // 최대값 갱신 return; } // 상하좌우 이동을 모두 시도 int dx[] = {-1, 1, 0, 0}; int dy[] = {0, 0, -1, 1}; for (int d = 0; d < 4; d++) { int nx = x + dx[d]; int ny = y + dy[d]; // 새로운 위치...
테케 3번만 틀림
테스트케이스 3번만 틀렸다고 뜨는데 어떻게 해결해야할까요,,