안녕하세요. 여러 테스트 케이스 가지고 해봤는데 반례를 찾지 못해서 질문 드립니다. 단순 반복 DFS로 구현을 해봤는데요. 치즈 조각이 남아 있을 때 까지 반복 공기 부분 찾기 ( 치즈 속 구멍은 x) 공기와 맞닿은 치즈 부분 찾기 공기와 맞닿은 부분 녹이기 12%에서 틀리는데 어떤 부분을 놓친걸까요?? http://boj.kr/0eaf787d61fa40b093d24ee028da3376
코드를 아직 이해하지 못했습니다. go 함수에서 a[y][x]가 1이기만 하면 무조건 벡터에 좌표를 넣고 return 하는 것 같은데, 이렇게 하면 가장 바깥에 있는 치즈의 면적 외에도 내부에 있는 치즈 (1)까지 전부 포함되어 벡터에 넣고 메인 함수에서 0으로 만드는 것 아닌가요? 가장 바깥쪽을 인식한다. 가장 바깥쪽을 제거한다. 면적을 카운트 한다. 완전히 없어질 때까지 반복 이게 정답 로직인 것 같은데, 코드에서는 a[y][x]가 1이기만 하면 무조건 제거하는 것으로 해석되어 헷갈려서 질문드립니다.
안녕하세요 강사님! 수업 도움이 정말 많이 되고있습니다, 감사합니다. 다름이 아니라 그리디- 씨름선수 문제에서 질문이 있는데요! (181,60), (180,70), (170,72) 이렇게 꼭 키가 가장 큰 사람을 반드시 포함시키지 않아도 세 명을 선발할 수 있다고 생각했는데 키가 가장 큰 사람을 반드시 포함시키고 세는 경우만 답이 되나요?? 그래서 아래와 같이 코드를 써봤는데 이렇게 하면 답이 틀릴까요? n=int(input()) data=[] for i in range(n): height,weight = map(int, input().split()) data.append((height, weight)) data.sort(key = lambda x : (x[0], x[1]), reverse=True) tmp_lst = [] for i in range(n): tmp=1 max = data[i][1] for j in range(i, n): if max<data[j][1]: max = data[j][1] tmp+=1 tmp_lst.append(tmp) max_cnt=tmp_lst[0] for i in range(n): if tmp_lst[i]>max_cnt: max_cnt=tmp_lst[i] print(max_cnt)
void dfs(int x, int y) { if (board[x][y]==2||board[x][y]==0) return; if (x < 0 || y < 0 || x >= n || y >= m) return; board[x][y] = 2; dfs(x + 1, y); dfs(x, y + 1); dfs(x - 1, y); dfs(x, y - 1); return; } 안녕하세요 선생님 혹시 강의 내용에 종화 문제에서 이렇게 구현하는 것 또한 dfs라고 할 수 있는걸까요?? 제 코드가 앞으로 문제 풀기에 있어서 더 복잡해 보이는건지 감이 잡히지 않아서 질문드립니다.
안녕하십니까 큰돌님 복습하다가 궁금한게 생겼습니다 안전영역 최대값을 구하기 위해 ret 을 1로 초기화하는데 3중 반복문의 첫 번째 for문이 무조건 1부터 100까지 돌면서 잠기지 않는 지역이 있을 수 있어도(이때, 최소값은 1) 영역 높이가 최대 100이고 반복문 d값이 100까지 가면 결국 마지막에 100 이하의 높이인 영역은 잠기므로 무조건 최소값은 0 으로 되는 거 아닌가요 ?? 그래서 ret 을 0으로 초기화 해야 된다고 생각하는데 뭔가 어렵네요ㅜ
안녕하세요 강사님 ㅎㅎ 맞은 코드 : http://boj.kr/1b7e6a102d7a4a3893e9e95d35517735 틀린 코드 (메모리 초과) : http://boj.kr/8e21367e52314b8585922b74a0fabad8 둘의 차이는 재귀함수의 기저사례만 다릅니다. 하지만 둘의 차이가 왜 메모리 초과를 발생시키는지는 잘 이해가 가지 않아서 질문드립니다 !
안녕하세요 변수 선언하는데 있어서 main위에 선언하는 것과 main안에서 선언하는게 무슨 차이가 있나요?? int n, m, num[15001], cnt; 해당 부분을 main 안에서 선언한 경우 틀렸다고 나오고, main위에다가 선언해야 맞았다고 나오는데, 그 차이를 이해하기 어려워서요! 확인부탁드립니다. http://boj.kr/0068cf0a6ca54091a5b44ac723c2ff4d
import java.util.Scanner; public class GetMaxSumOfGridPlate { public static void main(String[] args) { Scanner in = new Scanner(System.in); int arrLen = in.nextInt(); int[][] arr = new int[arrLen][arrLen]; for(int i = 0; i < arrLen; i++) { for(int j = 0; j < arrLen; j++) { arr[i][j] = in.nextInt(); } } System.out.println(getMaxSumOfGridPlate(arr)); } static int getMaxSumOfGridPlate(int[][] grid) { int max = 0; int diagonal1 = 0; int diagonal2 = 0; for(int i = 0; i < grid.length; i++) { int sum1 = 0; int sum2 = 0; for(int j = 0; j < grid.length; j++) { sum1 += grid[i][j]; sum2 = grid[j][i]; if(i == j) { diagonal1 += grid[i][j]; } } diagonal2 += grid[i][grid.length - i -1]; int sum = Math.max(sum1, sum2); max = max < sum ? sum : max; } int diagonal = Math.max(diagonal1, diagonal2); return max > diagonal ? max : diagonal; } } 제가 풀었는데 선생님께서 풀어주신 내용과 아이디어는 비슷하다고 생각했습니다 다만 5번 테스트케이스에서 통과가 안되어서 코드에 오류가 있는거 같은데 문제를 찾기가 너무 어렵습니다. 어느 부분이 틀렸을까요? ㅠㅠ
http://boj.kr/bcc06cf6a93641da9808a0950454e679 문자 탐색 및 종류 저장은 비슷하게 진행했고, atoi를 사용해서 앞의 0 제거 및 정수화를 진행해서 map에 저장했습니다. 이후 벡터에 넣을 때, second값만큼 first를 pish_back 후 less<int>() functor로 정렬을 했습니다. public TC에서는 문제없이 작동하지만 private TC에서 걸립니다. 어디서 문제가 발생하는지 모르겠습니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 문제 풀 때에 구조체를 사용하신 이유가 궁금합니다!!