묻고 답해요
169만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
입출력 싱크
ios_base::sync_with_studio(false) cin.tie(NULL); cout.tie(NULL)은 매번 사용해야 하나요?어떨때는 쓰고 어떨때는 안써서 헷갈립니다.. 출력해보고 타임아웃 날때만 한번 써보면 될까요?
-
미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
채점기가 in,out만 매칭하는 실행파일인가요?
안녕하세요 선생님채점기가 혹시 in-out이 맞는지 확인하는 실행파일인가요 아니면 효율성이나 알고리즘도 따지는 채점기일까요??제가 맥북사용자인데, in-out만 맞는지 확인하는 실행파일이면 따로 코드를 짜서 사용할까해서요 ㅠㅠ 윈도우에서 실행시켜봤는데 ㅠㅠ 이유를 모르는 에러가 발생합니다..
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3-B 질문있습니다.
안녕하세요 큰돌님!! main 부분 마지막 출력 부분에서 mx에 -1을 하는 이유는 처음 mx에 0을 담아놓기 때문에 그 값을 빼기 위함인가요??
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3 - G 12851 메모리초과
안녕하세요.저는 재귀로 했다가 시간초과 나서 BFS로 시도를 해보았는데 여러 예제를 넣으면 IDE상에서는 잘 됩니다. 그런데 백준에 넣으면 자꾸 메모리 초과라고 하면서 되지가 않네요. 변수도 별로 없고 그렇게 복잡한 코드도 아닌데 왜 안될까요.해설강의 봤는데 오히려 제 코드가 시간도 짧고 메모리는 훨씬 적게 먹을것 같은데...http://boj.kr/1fdf197d568c42be83e76b55ca24889b -- 해결했습니다.http://boj.kr/1455d3ec4d174bbd939b9ce22f57a763 visitied로 나중에 재방문하는 지점들을 처리하지 않게 만드니까 되네요.
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
1-k 질문입니다.
https://www.acmicpc.net/source/68946605강사님께서 적어주신 코드를 컴파일러에 실행해봤더니 아래와 같은 오류가 나옵니다.a.cpp:10:21: warning: array subscript is of type 'char' [-Wchar-subscripts] for(char a : s) cnt[a]++; ^~코드는 강사님과 동일합니다. 백준에선 통과했지만 컴파일러에서는 오류가 나오네요. https://www.acmicpc.net/source/68946669이건 제 컴파일러에서 오류가 안나오게 만든 코드인데요.char 타입이 음수 값을 가질 수 있어서, 그런가 싶어서 일단 'char'를 'unsigned char'로 변환하였습니다.근데 오류의 정확한 원인을 모르겠고,또 남들은 문제가 없어보이는데, 제 컴파일러에서만 오류가 나는 이유를 모르겠어서 여쭤봅니다.
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
4-B 재귀함수 질문 있습니다
안녕하세요 선생님. 선생님께서 제공해주신 정답 코드를 보면 go 재귀 함수를 사용하는데 go의 재귀 부분을 이해하지 못하고 있습니다. void go(int here){ if(here == n + 1){ int sum = 0; for(int i = 1; i <= (1 << (n - 1)); i *= 2){ int cnt = 0; for(int j = 1; j <= n; j++) if(a[j] & i)cnt++; sum += min(cnt, n - cnt); } ret = min(ret, sum); return; } {(A) 위치} go(here + 1); a[here] = ~a[here]; go(here + 1);}위 함수에서 go(1)에서 시작하고 나면 go(2) => go(3) => go(4) 까지 가고 나서 재귀가 한번 끝나고 난 뒤 다음의 동작이 이해가 가지 않습니다. 동작을 확인해보려고 기저 사례 코드와 go(here+1) 코드 사이({A 위치}라고 하겠습니다!)에 a[i]의 요소를 확인해보는 코드를 삽입하여 확인하였습니다.(우선 저 위치에서 a[i]를 확인하는 지도 확실하지 않습니다.) 그런데 3x3 짜리 예시입력에 대해서 행의 뒤집기에 따른 행렬 a[i]의 경우의 수가 8개가 나와야 한다고 생각되는데 A위치에서는 8가지 나오지도 않았습니다. 혹시 마지막 3줄에 따른 재귀함수가 어떻게 돌아가는 지 알 수 있을까요? 4-B 문제와는 별개로 3주차 완전탐색 부터 재귀함수에 따른 문제 풀이 방식이 대부분인데 제가 재귀 함수에 대한 이해가 조금 부족한 것 같아서 어려움을 겪고 있습니다. 재귀 함수 부분을 만들 때(예를 들어 void go(int y, int x){~~} 라면) 언제 다시 (예를 들어 go(ny,nx)) 처럼 적어주어 재귀를 들어가야 하는 지에 대한 어려움이 있습니다. 혹시 이럴 때는 어떠한 방식으로 공부하면 좋을까요?
-
해결됨코딩테스트 [ ALL IN ONE ]
강의자료 부탁드립니다.
노션 이메일 : sooin03@naver.com좋은 강의 잘 듣겠습니다.
-
해결됨2주만에 통과하는 알고리즘 코딩테스트 (2024년)
완탐 1090
안녕하세요 자바로 강의 듣고 있는 학생입니다.강의를 들었을 때 이해한 바로는 x,y 따로 계산해서 더해 최솟값을 구한다.받은 좌표의 겹치는 부분 그러니까 예제로 보았을 때 x: 14~16 y:14~16의 로 모이는 모든 경우를 찾는다k번째에 k명이 모이는 최소 이동 횟수를 구하면 되니까 확인한 좌표에서 가까운 k개를 구하면 된다이렇게 이해하고 구현하면 될까요?그리고 하루정도 고민한다 해도 해결되지 않는다면 다른사람의 답, 풀이를 확인해봐도 될까요? 아니면 계속해서 시도하는게 좋을까요?
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
8-H 문제 질문
안녕하세요 선생님 좋은 강의 매번 감사합니다. 강의를 보며 풀이를 보다 의문점이 생겨 질문드립니다. 답안코드의for(int i = 3; i <= max_n; i++){ f[i] = f[i - 1] + f[i - 2] + 1; } 이 부분에서 i의 조건이 i <= max_n 인 이유를 잘 모르겠습니다.앞에서 f 를 선언할때 int f[max_n] 으로 선언하였는데 위의 조건이 되면 for문 안에서 f[max_n] 까지 값을 할당해주는것인데 이러면 index범위를 벗어나서 할당하는것 아닌가요? 만약 max_n이 40이라면 마지막 인덱스는 f[40]이 아닌 f[39]으로 알고있어서 혹시 그게 맞지 않나싶어 질문드립니다! 왜 오류가 안나는지 궁금합니다. 아니면 제가 놓치고 있는 부분이 있을까요?
-
미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
continual_remove 함수에서 global blank, ch 선언 질문
안녕하세요.continual_remove 함수에서 global blank, ch 선언 하는 이유가 DFS에서 global blank, ch 참조할때 어디에서 선언한 변수를 참조할지 헷갈려서 그런건가요?continual_remove 함수에서 global 선언을 하지 않으니 정상동작하지 않는걸로 봐서는 DFS에서 참조하는 global blank, ch는 main에서 선언한 부분을 참조하는것 같은데, 혹시 제가 이해한게 맞는지 확인 부탁드립니다.
-
해결됨독하게 C를 배운 사람을 위한 선형 자료구조
g_pHeadNode
g_pHeadNode는 왜 주솟값을null로 갖고있나요?
-
미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
코드리뷰 부탁드립니다 .선생님..^^
function solution(arr) { let result = Number.MIN_SAFE_INTEGER; let row = 0; let column = new Array(arr.length).fill(0); let diagonal = new Array(2).fill(0); let miniDia1 = 0; /** 대각의 합 */ let miniDia2 = 0; for (let i = 0; i < arr.length; i++) { let miniRow = 0; /** 행의 합 */ let miniCol = 0; /** 열의 합 */ for (let r = 0; r < arr.length; r++) { miniRow += arr[i][r]; miniCol += arr[r][i]; if (miniRow > row) row = miniRow; }; miniDia1 += arr[i][i]; miniDia2 += arr[i][arr.length - 1 - i]; column[i] = miniCol; }; diagonal[0] = miniDia1; diagonal[1] = miniDia2; const maxCol = Math.max(...column); const maxDia = Math.max(...diagonal); result = Math.max(maxCol, maxDia, row); return result; };
-
미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
시간복잡도 질문
3중 for문으로 카드를 뽑으면 간단하다는 건 알고있었지만, 이러면 시간복잡도가 O(n^3) 이 되면서 시간초과가 나면서 안될 것 같다고 생각했습니다... 보통 n이 몇까지 가면 시간초과가 발생하나요? 이걸 제대로 몰라서 이중for문도 조심스럽습니다.
-
미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
멘토링 코드 중 이해가지 않는 부분이 있습니다.
이 코드에서if(arr[k][s] == i) pi = s; if(arr[k][s] == j) pj = s;이 부분이 이해가질 않습니다. 왜 i와 j 가 같아야지 pi, pj에 넣을 수 있는 건가요??
-
미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
14분경 설명에 대한 질문
안녕하세요 선생님. 설명 중 이해가 가지 않는 부분이 있습니다. L이 code의 4지점에 갔을때 왜 elif 구문에서 참이 될 수 없다는 말씀을 하신지 모르겠습니다.앞에 1이 한자리수로 걸리고 L+1이 되어서 4로 왔다면 if code[L] == i 구문에서 4에 걸리니까 문제 없는거아닌가요?
-
해결됨코딩테스트 [ ALL IN ONE ]
levelorder 방식과 postorder 방식에서의 시간복잡도에 관해 질문이 있습니다.
강사님께서는 어짜피 둘다 모든 노드를 순회해야 하기 때문에 최악의 경우에도 시간복잡도가 O(N)이라고 하셨습니다. 그런데 아래와 같이 leetcode에 제출한 결과 런타임이 다르게 나와서 의문이 들었습니다.위가 postorder고, 아래가 levelorder인데 왜 levelorder가 더 빠른건가요?? 아니면 시간복잡도는 대략적으로 계산한 결과이기 때문에 실제 런타임을 돌린 결과에서는 상수값의 차이가 나서 저런 결과가 나온건가요??
-
해결됨코딩테스트 [ ALL IN ONE ]
two_sum 문제에서 원소 중복 여부 관련 질문
two_sum 문제에서 input으로 주어지는 nums에는 중복 원소가 없다고 가정하나요?문제에 '같은 원소를 두 번 사용할 수 없습니다.'라는 조건이 있는데, 예를 들어, nums = [4,1,9,7,8,2], target=14인 경우에는 False를 출력해야 하는 반면, nums = [4,1,9,7,7,2], target=14인 경우에는 True를 출력해야 하니까 원소 중복 가능 여부를 여쭤보게 되었습니다!
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
int와 long long의 차이
큰돌님 안녕하세요. 강의 정말 잘듣고 있습니다!!옛날부터 궁금한 점이 있었는데, 항상 헷갈리는 부분이 있어서 이렇게 질문 남기게 되었습니다. 보통 숫자 데이터를 다룰 때, C++에서 int형과 long long형 타입 두 개를 보통 사용하는 것으로 알고 있습니다.데이터 범위에 따라서 두 개를 각각 나눠쓰면 되는 부분인데... 제가 궁금한 점은... 두 개가 그렇게 큰 차이가 없다면 숫자는 모든 걸 int형 말고, long long으로 다 선언하면 되지 않나? 라는 궁금증입니다!! 제가 혼자 공부를 해보니.. 32bit컴퓨터라면 int로 선언할때와 long long으로 선언할때 실행속도에서 차이가 생겼는데, 64bit로 넘어오면서 이 실행속도 차이도 없어졌다고 합니다. 시간복잡도(실행속도) 측면에서도 별로 그렇게 차이도 없고, long long으로 모든 숫자 타입을 지정하면 int형에서 발생하는 오버플로우 문제 등 장점들이 더 많다고 생각이 됩니다. 가장 큰 차이라고 생각이 드는 부분이 공간복잡도면인데, 코딩 테스트에서 공간복잡도는 크게 다루지 않으니.. 굳이 long long말고 int형을 쓰는 이유를 모르겠습니다. 정리: 숫자 데이터 타입을 구분할 때, 모든 걸 long long 타입으로 하면 안되나요?? long long타입으로 할 때, 안 좋은 면이 있나요?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
4-o
d[i] = d[stk.top()]= 1; 여기서 stk.top() 은 ')'을 리턴하는데, 어떻게 i-1 같은 역할을 할 수 있는 건가요..?
-
미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
안녕하세요, 문제를 풀다가 마땅한 방법이 떠오르지 않는 문제가 있어 질문 드립니다.
강의에는 포함되지 않는 문제인데 마땅한 방법이 떠오르지 않는 문제가 있어 질문 드립니다.마땅히 여쭤볼 분이 안 계셔서 여기 질문 드리는데, 바쁘시면 답변하지 않으셔도 괜찮습니다.문제는 프로그래머스 - 평행 이라는 문제입니다! 제가 푼 코드는 아래와 같습니다.import java.util.List; import java.util.ArrayList; class Solution { public int solution(int[][] dots) { double slope1; double slope2; slope1 = calculateSlope(dots[0], dots[1]); slope2 = calculateSlope(dots[2], dots[3]); if(Double.compare(slope1, slope2) == 0) { return 1; } slope1 = calculateSlope(dots[0], dots[2]); slope2 = calculateSlope(dots[1], dots[3]); if(Double.compare(slope1, slope2) == 0) { return 1; } slope1 = calculateSlope(dots[0], dots[3]); slope2 = calculateSlope(dots[1], dots[2]); if(Double.compare(slope1, slope2) == 0) { return 1; } return 0; } private double calculateSlope(int[] dot1, int[] dot2) { return (double) (dot1[1] - dot2[1]) / (dot1[0] - dot2[0]); } }하지만 점이 4개일 때가 아닌, 다른 경우에도 적용이 가능한 메소드를 만들고 싶은데 잘 되지 않는 것 같습니다.여유가 되신다면 부디 부탁 드립니다. 코딩테스트 연습 - 평행 | 프로그래머스 스쿨 (programmers.co.kr)