묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
종화 방귀 문제
제가 문제를 처음에 종화가 방귀를 꼈을 때 종화를 기준으로 상하좌우 한 칸 씩만 오염된다로 이해했는데 그런 것이 아니라 방귀를 끼는 순간 종화의 좌표를 기준으로 연결된 육지(숫자 1)들은 전부 바다(숫자 0)으로 변한다는 문제인거죠??
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2주차 #4-2 재귀적으로 코드짜기
http://boj.kr/7226630a963848e3bdc6a61318877151짠 코드가 적절한가요?적절하다면 재귀함수는 기저사례가 필요하다고 했는데 제가 짠 코드에서 기저사례는 어디에 있나요?틀렸다면 어디를 어떻게 고치는게 좋을지 알려주셨으면 좋겠습니다.감사합니다
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
7-V 질문입니다.
안녕하세요 큰돌님!기존 답안과 차이점은 조건에 해당하는 재귀함수만 호출하는 대신, 함수 시작(line13) 에서 시간을 검사하여, 배제한다~~!! 할 수 있도록 하였는데요...왜 틀린 답안인지... 가르침 부탁드립니다 ㅎㅎhttp://boj.kr/a97107fe0c2d4574a2b852b398a10ecd감사합니다.- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
-
미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
이중 for문을 돌아야 하는 정확한 이유가 있을까요?
function solution(arr){ let copy = arr.slice().sort((a, b) => b - a); return copy.map(it => arr.indexOf(it) + 1) } let arr=[87, 89, 92, 100, 76]; console.log(solution(arr)); 제가 코테공부는 거의 안해서 잘 모르는데 시간복잡도가 연관이 있을것 같습니다 2중 for문을 돌아야 하는 이유가 있을까요?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-I 참조 에러
안녕하세요 항상 강의 잘 보고있습니다.!궁금한 점이 있는데, go() 함수 부분에서while(true){if(ret.size() && ret.front() == '0')}참조 에러에 안걸리게 ret.size()를 꼭 적어야 한다고 말씀하셨는데, 제가 생각할땐 ret.front() == '0' 자체가 size가 1 이상이라는 것도 포함되니까 ret.size()를 적어야하는 이유를 잘 모르겠습니다.
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
8-x
강의를 3-4번을 봐도 이해가 안되는 부분이 있어서 질문드립니다.어떻게 2구간의 물이 3으로 맞춰 질수가 있나요...문제 예시를 보면,높이 4와 높이 1의 구명을 통해 바깥으로 물이 빠지고높이 3의 구멍으로 물이 들어와서 다시 높이 1의 구멍으로 바깥으로 물이나갈텐데 ... 2개의 높이가.. 3으로 어떻게 맞춰질수가.. 있나요?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
[8 - N] 질문입니다.
안녕하세요 선생님, 답지에서 모르는 부분이 생겨 질문을 드립니다. https://www.acmicpc.net/source/share/0a4fdcae351643db83359907f8b3da8518라인에서 if (dist[here] != here_dist)continue; 가 의미하는 바를 정확히 모르겠습니다. 현재 이해한 것은 아래와 같습니다. here_dist : 이전에 갱신되어 pq에 추가된 값dist[here] : 이후에 갱신되어 수정된 값기존 거리보다 새로운 거리가 짧을 때만 dist 갱신 및 pq에 추가 작업이 일어나므로 dist에 저장된 값과 here_dist 값이 다르다는 것은 이후에 갱신 된 값이 더 작기 때문에 here_dist값이 마지막에 갱신된 dist[here]과 다른 값일 경우 가장 작은 값이 아니므로 현재 노드로 선택될 자격을 잃어버려 continue로 다음 후보 노드로 이동하게 된다.이런식으로 현재 노드로 선택하지 않고 이동시키는 코드가 맞을까요?
-
미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
11. 임시반장정하기 질문 있습니다.
아래의 3중 for문에 print문을 넣어서 실행해보면 자기자신과 같은 경우도 포함되어 if문에 들어가게 되는데, 그렇게 해서 count에 1이 더해지는 것은 잘못된 로직 아닌가요? 그렇다면 3중 for문 안의 if문 조건에 i != j 를 포함시켜야 맞지 않을까요? public int solution(int n, int[][] arr) { int answer = 0; int max = Integer.MIN_VALUE; for (int i = 1; i <= n; i++) { // i번 학생 int count = 0; for (int j = 1; j <= n; j++) { // j번 학생 for (int k = 1; k <= 5; k++) { // k : 학년 if (arr[i][k] == arr[j][k]) { System.out.println("arr[" + i + "][" + k + "] = " + arr[i][k] + " / arr[" + j + "][" + k + "] = " + arr[j][k]); count++; System.out.println("count : " + count); System.out.println(); break; } } } if (count > max) { max = count; answer = i; } } return answer; }
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-J 맞왜틀 10709
안녕하세요 예제 TC는 다 맞는데 틀리다고 나오네요..제가 생각한 풀이 방식은 탐색을 하다 구름이 아닌 경우 인덱스를 하나씩 줄이면서 구름의 위치를 찾는 식으로 풀어봤습니다.http://boj.kr/154ed80b9b0843e99513073decc1482b
-
해결됨자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
섹션8 수열추측하기 질문 있습니다.
<html> <head> <meta charset="UTF-8" /> <title>출력결과</title> </head> <body> <script> function solution(n, f) { let answer = 0 let flag = 0 let dy = Array.from({ length: 11 }, () => Array(11).fill(0)) let check = Array.from({ length: n + 1 }, () => 0) let temp = Array.from({ length: n }, () => 0) let b = Array.from({ length: n }, () => 0).map((v, i) => combination(n - 1, i)) function combination(n, r) { if (dy[n][r] > 0) return dy[n][r] if (r === 0 || n === r) return 1 return (dy[n][r] = combination(n - 1, r - 1) + combination(n - 1, r)) } function DFS(index, sum) { if (flag) return if (index === n && sum === f) { answer = temp.slice() flag = 1 } else { for (let i = 1; i <= n; i++) { if (check[i] === 1) continue temp[index] = i check[i] = 1 DFS(index + 1, sum + b[index] * temp[index]) check[i] = 0 } } } DFS(0, 0) return answer } console.log(solution(4, 68)) </script> </body> </html>선생님께서 올려주신 답안을 보면DFS 함수 안에서 수열을 만들 때 for문 조건이 i <= n 이므로 만들 수 있는 수열은 [4, 4, 4, 4]가 마지막 값일 것으로 예상됩니다.만약 문제 조건을 N=4, F=68로 바꾸면 답안 코드로는 답을 얻을 수 없습니다. N값이 가장 윗줄에 나오는 숫자의 갯수를 의미하기 때문에 가능한 조건이라 생각됩니다. 이 경우 for문 조건의 n을 더 큰 값으로 바꾸고, 강의에서 알려주신 push, pop을 이용한 코드로 작성하면 답을 얻을 수 있었습니다. 하지만 n값이 10인 경우, 11인 경우 등 n값에 따라 나올 수 있는 답이 다르기 때문에 사전순으로 가장 앞에 오는 것이 무엇인지 판별하려면 또 문제가 생깁니다. N=4, F=68의 문제 조건에서 for문의 n값이 10인 경우 답이 [3, 9, 10, 8]가 나오며, 11인 경우 [1, 8, 11, 10]이 나오기 때문에 11인 경우가 답이 되어야 할 것으로 생각됩니다.n값이 너무 커지면 실행시간이 오래걸리기 때문에 문제 조건에 맞는 적절한 값이 필요할 듯 싶은데, 이걸 잘 모르겠습니다. 제가 이해를 잘못 하였을 수도 있습니다. 선생님께서 조언해 주시면 감사하겠습니다.
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
p.130 질문입니다.
값에의한호출 , 참조에의한호출을 배웠습니다.여기서 벡터는 참조에의한 호출을해야 값이 수정되는반면에 배열은 참조에의한 호출을 안해도 배열이 수정되는것을 보았습니다. 원리가 이해되지 않아 궁금해서 질문드립니다.
-
미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
질문 있습니다!
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. count 함수에서 sum + x > capacity 조건에서 sum이 왜 x가 되는지 잘 이해가 가질 않습니다. sum + x이 capacity를 초과하니 x를 더하지 않아야되므로 sum의 값은 변화하지 않고 그대로 원래 sum값을 가져야 하는거 아닌가요?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
4-B 시간복잡도
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요, 선생님. 시간복잡도가 2^40 (20 짝+ 20 홀)이라 하였는데 어떻게 시간복잡도가 이렇게 나왔는지 궁금합니다.만일 n=2 라하면 시간복잡도는 2^4 = 16개의 경우인데 실제 계산해보면 8개가 나오더군요.입력값이 {{H,H},{H,H} 라하면, 4개의 원소 중 H또는 T가 단독으로 나오는 경우가 없기에 ( 한 행 또는 한 열에 놓인 N개의 동전을 모두 뒤집는 작업들을 수행하니)아래와 같이 모든 경우의 수(8)를 구했습니다.{{H,H},{H,H}} || {{H,H}, {T,T}} || {{H,T}, {T,H}} || {{T,T}, {H,H}} || {{T,H}, {H,T}} || {{T,H}, {T,H}} || {{H,T}, {H,T}} || {{T,T}, {T,T}} '||'로 집합을 구분했습니다제가 놓친 부분이 있을까요?
-
해결됨2주만에 통과하는 알고리즘 코딩테스트 (2024년)
언어 문제 질문 드립니다.
현재 c++를 사용중인데 c++로 해도 상관은 없나요?
-
해결됨[자바/Java] 문과생도 이해하는 DFS 알고리즘! - 입문편
(백준 1260) 큐 사용에 대해서 질문드립니다!
선생님 덕분에 회차를 거듭할수록 재귀에 대한 이해도가 높아지고 있습니다 감사합니다!기존에 계속 독학으로 하다보니 제가 아는 내용과 조금 다른 부분이 있어 오늘만 벌써 두번째 질문이네요 ㅜㅜ기존에 큐를 구현할때 Queue<Integer> q = new LinkedList<>();혹은 PriorityQueue<Integer>pq = new PriorityQueue<>();로 구현해서 사용했었습니다!근데 혹시 ArrayList로 구현하시는 이유가 있을까요?? 하나 더 여쭤보자면...dfs는 재귀함수를 호출하는게 필수인데 비해bfs는 재귀호출이 없는데그럼 bfs는 재귀가 아닌 queue를 무조건적으로 사용한다고 생각하면 될까요? 매번 훌륭한 강의 감사드립니다!!
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3-O 시간복잡도 계산 질문
안녕하세요 큰돌님처음 이문제 읽고 완탐이 가능한지 계산할때시간복잡도 = 300개중 3개 뽑는 확률 X (추가된 가로선에 대해 정답인지 탐색하는 횟수 -> 대략적 n*h)로 생각해서 완탐이 안될꺼라고 생각을 하였는데요~혹시 제가 생각한게 틀린걸까요??아 물론 해당 문제는 백트래킹이긴하지만 혹시 제가 잘못알고 있을까봐 헷갈려서 질문드립니다..!
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
1-G
안녕하세요 큰돌님, 강의 잘 듣고 있습니다 ㅎㅎ다른것이 아니라, 이와 같은 문자열 문제를 풀때#include <regex>에 있는 regex문법을 사용하는 것도 편리해보이던데, 이 문법도 익혀서 코딩테스트에 자주 사용해도 좋을지 궁금해서 질문 드렸습니다ㅎ - 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
7-K 질문입니다.
안녕하세요 큰돌님, 질문드립니다.아래 코드가 틀린이유 한번 확인 부탁드립니다.답안과 다른점은 다음과 같습니다.Q1. 재귀함수를 한번만 호출토록 변경했는데 왜 오답인지 모르겠습니다.Q2. dp 순서를 dp[cnt][y][x][prev]; 으로 바꾸면 런타임에러가 나는데 , 순서를 바꾸면 안되는 이유가 뭘까요? for(int i=0; i<2; i++){ int ny = y+dy[i]; int nx = x+dx[i]; if(ny<=0 || nx <= 0 || ny>n || nx>m) continue; if(a[y][x] == 0){ ret += go(ny,nx,cnt,prev) % mod; }else if(a[y][x] > prev){ ret += go(ny,nx,cnt-1,a[y][x]) % mod; } }https://www.acmicpc.net/source/share/dd2d1f8b26f14fcaacd9584554815282감사합니다 :)- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
p.123 질문입니다.
교안 123p중,기본 sort()함수와 우선순위큐에서의 정렬은 반대개념인가요? sort()함수에서의 greater<>()는 내림차순이고 less<>()는 오름차순인데 우선순위큐에서는 반대일까요? 교안내용. 단순하게 int형 우선순위큐는 다음 코드 처럼 greater<타입> 을 써서 오름차순, less<타입>을 써서 내림차순으로 바꿀 수 있습니다.
-
해결됨[자바/Java] 문과생도 이해하는 DFS 알고리즘! - 입문편
(백준 24479) 강의에서 오름차순 정렬시 궁금한 점이 있습니다!
선생님 매번 감사합니다 유튜브부터 많이 도움을 받아 오늘 강의까지 결제하게 되었네요 :)for 문 안에 collections.sort를 사용하셔서 정렬하셨는데 저는 사실 그동안 Arrays.sort만 사용했었거든요프로그래머스에서 다른사람 풀이를 참고하다보면 Collections.sort 가 꽤 많이 나오더라구요합병정렬과 퀵정렬의 차이라는 이론적인 부분 외에 바꿔 사용해도 문제가 없는지, 효율적으로 다른부분이 있는지 궁금합니다! 추가적으로 궁금한게 하나 더 생겨서 수정합니다!문제에서 보면 노드의 방문순서를 출력하라고 했는데for(int i = 1; i <=N, i++) { bw.write(String.valueOf(answer[i]));로 출력해주셨습니다!리스트를 정렬해주었기에 크게 문제가 없는것인가 싶은데...조금 극단적으로 예시를answer[1] = 1answer[2] = 4answer[3] = 2answer[4] = 5answer[5] = 3이라고 했을때사용해주신 방식으로 출력하면 1,4,2,5,3 이 출력되나실제로 방문한 순서는 1,3,5,2,4로 상이하다는 생각이 들었습니다그래서 이중 for문을 사용하여for(int i = 1; i <=N; i++) { for (int j = 1; j <= N; j++) { if (i == answer[j]) 일때 j 의 값을 출력하는게순서를 출력하는게 아닌가.. 라는 의구심이 들었습니다혹시 제가 이해를 잘못하고 있는거라면 지적해주시면 감사히 듣겠습니다!