- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 선생님 안녕하세요 저는 경로에 대해서 string으로 저장하고 탈출시 출력하는 로직으로 작성했는데 왜 메모리 초과가 나는지 모르겠습니다. 알려주시면 감사하겠습니다... http://boj.kr/92e022062d0148faa40d478f052dfc89
안녕하세요! 궁금한점이 있어 질문 드립니다. fill(&visited[0][0], &visited[0][0] + 101 * 101, 0); 초기화 해주는 부분은 이해를 하였습니다. 그런데 &visited[0][0] + 101*101 이 부분이 이해가 가지 않습니다. 깊이 생각하지 않고 배열의 모든 부분을 순회 하면서 초기화 해준다고 생각하면 될까요?
안녕하세요, 1-L 문제 이분탐색으로 풀어보았는데요. lower_bound함수는 목표값을 찾지 못하면 해당 벡터 끝 다음 이터레이터 즉 코드상 arr.end()를 반환하니 lower_bound 실행 후 arr.end()인지 아닌지만 체크해주면 값을 찾았다로 생각했습니다. 그러나 실행시켜보니 조건문에 추가로 &&*it == goal를 적어주어야 성공이고 밑에 첨부한 링크와 같이 이 과정을 생략한다면 틀렸습니다라고 나옵니다. 이유를 알 수 있을까요? http://boj.kr/7f90a9926f17477394e238b900523acc
안녕하십니까 강의 잘 보고 있습니다. 결론적으로 테스트 케이스는 성공하였는데 왜, 어떠한 부분에서 실패가 떴는지 감이 잡히지 않아 글을 올립니다. 저는 map을 사용하여 풀어보았습니다. need라는 변수를 만들어 map을 한 번 순회하면서 필요한 값이 무엇인지 담고, 그 값이 map에 있으면 (현재 for문의 값, 필요한 값) 을 각각 마이너스를 해주는 형식으로 했습니다. 조건절에는 빌드를 해보니 map에 담겨 있지 않은 요소를 비교할 때 공간이 생기면서 값이 0으로 생겨나는 것 같아서 둘 다 값이 있을 때만 실행하게 하였습니다. 아래는 주소입니다. http://boj.kr/6072aa9514324b318f45514ef0412868
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. http://boj.kr/a88688ffea6947d2ada21dbb5775c405 안녕하세요 해당 문제를 입력을 string s로 받고 s를 0부터 sizeof(s)까지 돌면서 a~z에 해당하는 값을 1씩 증가시켜 마지막에 모두 출력했는데 어떤 부분에 오류가 있는지 모르겠습니다!
입력을 받을 때마다 조건문 돌려서 판별할 생각을 못하고 배열로 다 받아서 했더니 문제를 더 어렵게 풀어버렸습니다. 음.. 강의 코드 보면서 제가 푼 문제가 이렇게 쉽게 풀릴 수 있는 문제구나라고 알게 되었습니다.혹시 제 코드에 문제점이 있는지 확인해주실 수 있으신가요? 채점 파일에서는 다 맞았다 뜨는데 혹시 몰라서 질문 드립니다. 좋은 강의 항상 감사드립니다. 강의 보면서 열심히 공부하겠습니다. #include <iostream> #include <stdio.h> #include <string> #include <fstream> #include <vector> using namespace std; int main() { ios_base::sync_with_stdio(false); int n; cin >> n; vector<int> table(n); for (int i = 0; i < n; i++) cin >> table[i]; int max = 1; int cnt = 1; int idx = 0; int prev = table[0]; int count = 1; while (idx + count < table.size()) { if (table[idx + count] >= prev) { cnt++; } else { idx = idx + count; cnt = 1; count = 0; } prev = table[idx + count]; count++; if (cnt > max) max = cnt; } cout << max << "\n"; return 0; }
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. http://boj.kr/604e8201aae24300845cde414a1f4416 http://boj.kr/604e8201aae24300845cde414a1f4416 선생님 강의보고 생각하면서 유사하게 만들어봤는데 틑렸다고 나옵니다 ㅠㅠ 정답 코드랑 비교해도 어떤 부분이 틀렸는지 확인이 안되서 ㅠㅠ 질문 남깁니다. 감사합니다.
선생님 답변 감사합니다 답변 확인후에 BFS로 수정해보았는데 여전히 시간초과가 발생이 되네요.. 제가 보기엔 효율을 좋게 했다고 생각하는데 왜 새로운 코드에서도 시간초과가 계속 발생하는지 답변 부탁드립니다...모르겠어요... gpt는 선생님 코드와 제 코드 비교했을때 시간복잡도 측면은 별차이 없다고 하는데 말이죠.. http://boj.kr/9dbda62580614b358e26e41ec3073620
x,y 순서가 혼란이 옵니다. 이 문제에서처럼 pair에 (first,second)를 넣는 상황이라던지 ny, nx의 범위를 따질때 ny>=n인지 ny>=m인지 혼란이 와서 정리를 하려고 합니다. 큰돌님께서는 (y,x) 순서를 기반으로 dfs bfs를 만드시는데 main이나 solve에서는 i,j 순서로(n,m 순서로) 입력받고 처리하시는거 같아 문의드립니다. dfs bfs 이외에 코드에서는 다 반대로 i,j를 x,y 순서로 받는 방식으로 맵이나 리스트를 생성 한 후 탐색만 y,x 방향으로 하시는건가요? n,m이 같은경우는 상관없을거같은데 이와같이 n,m이 다른경우 (x,y),(i,j),(n,m),(first,second) 등등 순서에 있어서 자주 실수를 해서 질문드립니다.
안녕하세요 큰돌님, 강의 잘 듣고 있습니다. 7-M의 시간복잡도 계산에 관해 질문드리고 싶습니다. 큰돌님은 본 문제를 풀 때 시간복잡도를 어떻게 계산했는지 궁금합니다. 특히 각 칸에서 양분을 줄 때, 나무의 개수가 명확하지 않은 상태해서 sort를 해야하는데, 이때 sort의 시간복잡도인 O(NlogN)에서 N을 어떻게 설정하셨는지 궁금합니다. 감사합니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.dfs에서 2차원 벡터를 계속 복사하는 방식을사용했는데 메모리 초과가 떴습니다벡터를 계속 복사해서 그런걸까요?아님 무엇때문에 메모리 초과가 난걸까요? http://boj.kr/10f3e6d1d9744b5286cd33479677c430
강사님의 영상은 문제를 풀고 난 후, 잘 안 풀릴 때 보는게 좋은 것 같아 저만의 방식으로 푼 코드입니다. 시간초과가 나왔는데, 어디서 시간을 잡아먹는건지 감이 잡히지 않아서 글 올립니다. 포켓몬이 알파벳으로 주어지는지, 숫자로 주어지는지에 대한 판별은 string으로 값을 받고 0번째 인덱스의 값이 65와 같거나 크고 90과 같거나 작으면 알파벳이라 판단. 아닐경우 숫자로 판단하여 출력하게 하였습니다. 아래가 제 코드입니다. http://boj.kr/93f1ddafe1484c2b892e25729c745365
http://boj.kr/5a173f75eb094fd0a5ffef8f9387af5e 다음과 같이 코드를 작성했습니다. 백준에서 56%정도 됬을때 틀렸다고 나오는데 제가 생각한 틀린 이유로는 무조건 ()를 추가한다. 전체가 압축이 가능한 경우에도 전체를 검사하고 4등분을 해야하는데 4등분한 것부터 검사한다. 인거 같습니다. 혹시 이 이유로 틀린게 맞을까요?? 저기서 조금 수정해서 답이 나오려면 어떤부분을 어떻게 고쳐야 할까요??
http://boj.kr/5c6791ecb33241cab42be762031958c3 안녕하세요 큰돌님 이번 문제는 강의를 봐도 잘 이해가 되지 않아서 핵심으로 짚어준 부분을 참고하여 제가 로직을 구현했는데, 어려움이 있어 질문드립니다. 백준 문제에서 주어진 예제는 정답이 나오는데, 아래 링크의 질문 게시판에 있는 반례는 모두 틀리게 나옵니다. https://www.acmicpc.net/board/view/89304 코드에 사용되는 변수는 다음과 같습니다. x = bfs로 방문하는 수빈이의 현재 위치 t = 수빈이가 해당 위치에 도착하는 최단 시간 bp = 해당 시간(t)에 동생의 현재 위치 제가 생각해낸 방법은 다음과 같습니다. 먼저 동생이 앞으로 가며 위치에 도달하는 시간을 brother[] 배열에 기록했습니다. 수빈이가 동생을 만날 수 있는 방법을 다음 두 가지로 분류했습니다. (1) 수빈이가 앞으로 가며 특정 위치에서 동생과 만난다. (2) 수빈이가 동생보다 먼저 앞으로 간 다음에, 왔다갔다 하며 동생을 기다린다. (이 때 홀수, 짝수 시간으로 동생과 만날 수 있는지 확인한다.) bfs를 단계 별로 구현하기 위해 5분 45초에 나오는 플루드 필(?)을 수빈이가 해당 위치에 도착하는 최단 시간(변수 t)로 구현하였습니다. + 제 코드의 오류를 하나 발견하였는데 다음과 같습니다. 예제 n = 18, k = 66 를 넣었을 때, 수빈이는 18 36 37 38 76 순으로 방문하고, 동생이 66, 67, 69, 72, 76 순으로 방문 했을 때 정답인 4초가 나오지만, 제 코드 상으로는 76을 최단 시간인 3초에 방문할 수 있으므로, 수빈이가 동생을 만나지 못한다고 판단하여 만날 수 있는 다음 지점을 답으로 출력합니다. 위와 같은 오류를 어떤 논리로 잡아야 할지 아무리 생각해도 모르겠고, 강사님의 코드도 도저히 이해가 가지 않아 질문 드립니다. ㅠㅠ
http://boj.kr/c287b933ed0442d4ba02329f7601b61b 선생님, 안녕하세요. 동생의 위치를 미리 구해놓고, 수빈이가 그 위치에 갈 수 있는지를 구하는 식으로 했습니다. bfs를 이용했고, bfs의 로직 안에 현재 수빈이가 동생보다 빨리 방문했을 때를 처리하는 로직을 넣었는데요. 강의에서 설명해주셨던 것처럼, +1 -1을 하면 제자리로 돌아올 수 있고, 이때 2초가 걸리기 때문에 시간차가 반드시 짝수여야만 수빈이가 동생을 찾을 수 있기 때문에, 동생이 오는 시간 - 현재 수빈이가 오는 데 걸린 시간 이 짝수 일때, 동생이 오는 시간을 최소값으로 넣는 로직을 넣었습니다. 그런데 답이 틀렸다고 나와서, 1)왜그런건지? 2)visited배열을 2차원으로 한거랑 무슨 차이가 있는지 궁금합니다.