묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
강의 시작 기준 질문드립니다
안녕하세요 큰돌님큰돌님 로드맵영상 보고 참고해서 공부중입니다 ㅎㅎ제가 지금 c++개념강의만 한번 듣고 이제 큰돌님 코테강의 들으려고하는데프로그래머스 lv0같은 거 풀고나서 강의를 듣는게 나을까요?코테강의 공부를 시작하는게 나을까요??
-
미해결코딩테스트 실전 모의고사(with C++) : 대기업 대비
문제 의문
선생님 BFS함수 코드 중에서 영희가 기사를 지나쳐가는 경우는 고려안했는데도 정답인 이유가 있나요?-> ['영희는 산딸기가 없이는 기사를 지나쳐 갈 수 없다.'] 2 - 0 - 3 - 4 이런 식의 행이 있으면 문제되지 않을까 싶어서요
-
해결됨코딩테스트 [ ALL IN ONE ]
제 경우에는 이렇게 코드를 짜봤는데 이것도 맞을까요?
class Solution(object): def lowestCommonAncestor(self, root, p, q): if root is None: # check whether Node is empty return if root is p or root is q: return root # root 노드가 p 또는 q가 아니면 순회하도록 재귀함수 호출 l = self.lowestCommonAncestor(root.left, p, q) # code 1 r = self.lowestCommonAncestor(root.right, p, q) # code 2 # p와 q 조건 검사를 마친 후(모든 노드를 순회하는 것은 아님) if l and r: return root elif l: return l else: return r먼저 LCA함수를 호출하면 root가 가리키는 노드가 있는지 체크한 다음에 계속해서 p 또는 q 노드가 맞는지 확인을 합니다. 만약 p 또는 q 노드가 아니면 재귀함수를 호출해서 자식 노드로 더 깊이 순회하도록 만듭니다. 역시 자식 노드들도 p 또는 q 노드가 맞는지 검사한 후 맞으면 l 또는 r에 그 노드를 저장합니다. 여기서 궁금한 점은, 자기 자신이 공통 조상이 될 때인데요. 이렇게 되면 더 깊이까지 탐색하지 않아도 elif l: return l 에 의해서 왼쪽만 탐색했으니까 시간복잡도가 O(logN)인가요? 아니면 다른 케이스들도 고려해서 최악의 경우 모든 노드를 탐색해야되니까 O(N)이 되는건가요?
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-E 재귀함수 범위관련 질문 있습니다
안녕허세요 강사님강사님 풀이 과정을 3번 이상 듣고 코드를 여러번 봤는데도 잘 이해가 안가는 부분이 있어서 질문드립니다! 강사님 코드기준(해설집) 11번째줄과 12번째줄에for(int i = y; i < y + size; i++){ for(int j = x; j < x + size; j++){이렇게 i 와 j 의 범위를 나누셨는데왜 y가 0 일때 모든 x 값 비교하고 재귀하고이런식으로 만든 이유가 궁금해서 질문합니다. 왼쪽 위, 오른쪽 위, 왼쪽 아래, 오른쪽 아래 이렇게 한 묶음으로 검사를 하고 그 값을 return 하고 해야 맞지 않나요 ?제가 풀었던 범위 나누기와 달라서 너무 헷갈려서 질문합니다. #include <iostream> using namespace std; // 좌상 우상 좌하 우하 const int dy[4] = { -1, -1, 0, 0 }; const int dx[4] = { -1, 0, -1, 0 }; int N; char adj[65][65]; string ret; string QuardTree(int y, int x, int n) { string str; if (n == 1) return str += adj[y][x]; n = n >> 1; // n -> 2 for (int i = 0; i < 4; i++) { int ny = y + dy[i] * n; // 2 --> 1 int nx = x + dx[i] * n; str += QuardTree(ny, nx, n); } if (str == "0000") str = "0"; else if (str == "1111") str = "1"; else str = "(" + str + ")"; return str; } int main() { cin >> N; for (int y = 1; y <= N; y++) { string temp; cin >> temp; for (int x = 1; x <= temp.size(); x++) adj[y][x] = temp[x - 1]; } ret += QuardTree(N, N, N); cout << ret; return 0; } 혹시 질문이 이해가 안가실까봐 제 코드 풀이도 올려요
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-D 영역 범위 관련 질문드립니다.
선생님께서는 입력 받은 값x1,x2y1,y2로 범위를 정하고 그에 해당하는곳에 1의 값을 넣어 주었는데그 값이 배열에서의 값과는 다른데--> 입력이 5 7 3 0 2 4 4 1 1 2 5 4 0 6 2다음과 같이 주어 졌을때(0,2) ~ (4,4) 부분에 해당하는 배열의 값들을 보면a[1][0] a[1][1] a[1][2] a[1][3]a[2][0] a[2][1] a[2][2] a[2][3]인데 왜 범위를 for(int x = x1; x < x2; x++){ for(int y = y1; y < y2; y++){ a[y][x] = 1; 다음과 같이 나누어 그 값을 바로 넣었는지 궁금합니다. 제 생각은 y좌표의 위치를 뒤집어서 생각하는 것이기에 모든 값들도 똑같이 뒤집어서 넣는거는 상관없어서 넣은것 같은데 맞을까요??
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-Q 모범답안 코드리뷰 부탁드립니다.
안녕하세요 큰돌님2-Q 2636문제 모범답안 코드 질문있습니다.void dfs함수에서 return이 두개가 있는데 각각 return을 하면 다시 main함수의 dfs(0,0)직후로 넘어가지는건가요 아니면 void dfs함수 내에 있는 if문의 return과 for문 바깥에 있는 return이 다른의미를 갖는건가요? void dfs함수 내의 return부분이 어디로 가는지 헷갈립니다.
-
미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
DFS로 말단노드의 레벨값 구할때
이진트리 노드의 하위노드가 한개만 한개는 없을 경우 안된다고 말씀하셨는데 실제로 실습을 해보았을때도 안되더라구여 왜 안되는지 이유를 알고 싶습니다예를 들어If(root.lt==null && root.rt ==null) return L;else if(root.lt==null && root.rt != null) return DFS(L+1, root.lt);else if(root.lt !=null && root.rt == null) return DFS(L+1, root.rt);else return Math.min(DFS(L+1, root.lt), DFS(L+1, root.rt);이렇게 했을 경우 하위노드에 있는 하위노드 두개가 있는건 하위노드로 접근했을 때 값이 존재 했는데 하위노드가 한개 있을 경우 하위노드가 존재하는 노드를 dfs로 재귀했을경우 null값으로 되어서 이게 왜 이렇게 되는건지 알고 싶습니다.
-
미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
코드 정리한 것들 깃허브에 올려도 되나요?
강사님 안녕하세요. 강의 정말 잘 듣고 있습니다!매일 5문제씩 꾸준히 풀고 있는데,, 깃허브에 올려도 될까요?
-
해결됨코딩테스트 [ ALL IN ONE ]
강의 자료 요청 드려요.
노션 이메일 : realbig4199@gmail.com구글 폼도 작성했는데 조금이라도 빨리 받고 싶어서 글 남깁니다.좋은 강의 감사드려요!
-
미해결입문자를 위한 코딩테스트 핵심(이론과 문제풀이) [Python]
해시테이블 개방번지화
해시테이블 개방번지화 방법에서 빈 공간을 찾는 방식을 알았는데, key를 넣었을 때 해시값을 찾을 때가 궁금합니다. 예를 들어 key로 daniel이 들어왔다면 체인법에서는 해당 해시값에서 모든 노드를 검사에 있는지 확인할 수 있었잖아요.개방 번지화 방법에서는 다른 주소로 저장할 수가 있는데, 그러면 계속 뒷 메모리를 끝까지 검사하면서 찾아보아야 하나요?아니면 마지노선이 있어서 daniel이 없다는 걸 화정하고 넘어갈 수 있는 기준이 있는건가요? 너무 깊숙히 생각하는 것 같지만, 시간복잡도가 끝없이 늘어나는 건지 걱정이 되서 질문드렸습니다. 감사합니다.
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
시간초과
아무리 해도 시간 초과 나고 심지어 강의 코드 그냥 똑같이 써도 시간초과가 나네요. 심지어 ret2 안구하고 그냥 ret5만 구해서 계산해도 시간초과입니다.ios_base::sync_with_stdio(false);cin.tie(NULL); cout.tie(NULL); 이거 안썼다고 시간초과 난다고 틀렸다고 하는건 비정상이라고 생각합니다. 실제 프로그래밍할 때 써야하는 것도 아니고 무슨 저거 썼는지 안썼는지 확인을 하는지 어이가 없네요. ㅋㅋ 이게 무슨 알고리즘 테스트인지.
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
모법단안에서 질문이있습니다.
언제나 좋은 최상의퀄리티 수업을 듣고있음에 감사합니다.모법답안에서 질문이있는데요 의상이름과 종류 입력받을때 중간에 공백이 존재하는데 getline안써도 무방한가요?감사합니다 좋은하루보내세요
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3-D 반례 질문드립니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 제목과 같습니다. 아래 링크에 해당하는 코드의 반례를 알고싶어서 질문남깁니다. 항상 감사합니다.https://www.acmicpc.net/source/share/2c4c4086a4314e4688e24d7cbe8d1b4b
-
미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
string vs StringBuilder 어느 것을 사용해야 될까요?
안녕하세요! 너무 간단한 질문이지만, 초심자라 .. 질문 드리고 싶습니다 지금까지 String을 합칠때 '+' 을 사용하여 왔습니다. 그런데 StringBuilder에 대해 공부를 좀 하고 보니 이대로 사용하면 괜찮을까? 고민을 하게 되었습니다. 물론, 문제마다 다르겠지만, 코딩테스트를 시험치러 갈때 StringBuilder를 사용하지 않았다고 해서 시간초과가 뜨거나 그렇진 않을지 궁금합니다. 지금부터라도 StringBuilder로 사용하는 것이 맞을까요?
-
미해결입문자를 위한 코딩테스트 핵심(이론과 문제풀이) [Python]
도전과제 14078 막대기문제 질문
안녕하세요 선생님 막대기 알고리즘 풀이법에 질문있습니다for i in range(len(stick)-2, -1, -1): if stick[i] > maxN: maxN = stick[i] answer += 1 return answer 이부분에서 len(stick)-2 를 해주는 이유가 무엇인지 질문드립니다. 감사합니다.
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
1-K 맞왜틀?
http://boj.kr/1cea1d70b28a4da8b871d48acb7c4907 홀수가 2개 이상이면 팬린드롬이 불가하고 아니면 팰린드롬을 만드는데알파벳 개수가 1개이면 홀수 문자에 넣고 아니면 개수의 반 만큼 word에 넣는다 이때, 홀수개이면 홀수 문자에 넣고 끝에 추가한다 그리고 뒤집은 word를 추가한다 이런 식으로 짰는데 실행하면 맞는데 왜 틀렸다고 뜨는지 궁금합니다!
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-a 방문처리차이
http://boj.kr/e4c18d04514e406f88c1af0ce04953cb http://boj.kr/04682590a73c47c992a3437b78c555d0 비슷한 조건인거같은데 한쪽은 통과하고 한쪽은 메모리초과네요 어째서죠?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
10 20 11 12 13 일때 20자리에 11이 갱신되는게 어떻게 되는건지 모르겠습니다
*lowerPos가 뭘 가르키고 배열이 어떻게 되는지 더 자세하게 설명해주시면 안될까요 ㅠㅠ
-
미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
매출액의 종류 문제 질문있습니다.
해당 문제를 다음과 같이 풀었는데 RunTime Error가 발생하는 이유가 뭘까요 ?혹시 시간초과가 되는것일까요 ? import java.util.HashMap; import java.util.Scanner; public class No3 { public static void solution(int n, int m, int[] arr) { HashMap<Integer, Integer> map = new HashMap<>(); int[] answer = new int[m]; int lt = 0; for (int i = 0; i < m; i++) { map.put(arr[i], map.getOrDefault(arr[i], 0) + 1); } answer[0] = map.size(); for (int rt = m; rt < n; rt++) { map.put(arr[lt], map.getOrDefault(arr[lt], 0) - 1); map.put(arr[rt], map.getOrDefault(arr[rt], 0) + 1); if (map.get(arr[lt]) == 0) map.remove(arr[lt]); answer[++lt] = map.size(); } for (int x : answer) System.out.print(x + " "); } public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int m = sc.nextInt(); int[] arr = new int[n]; for (int i = 0; i < n; i++) arr[i] = sc.nextInt(); solution(n, m, arr); } }
-
해결됨코딩테스트 [ ALL IN ONE ]
강의 자료에 첨부된 사진 개인 블로그에 사용해도 되나요?
혹시 dp 설명중에 사용하신 사진과 설명을 gif로 해서 블로그에 적어놓으면 이해에 도움이 될거 같은데 사용해도 될까요? 출저는 밝히도록 하겠습니다.