묻고 답해요
169만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결입문자를 위한 코딩테스트 핵심(이론과 문제풀이) [Python]
스택문제 괄호
강사님 안녕하세요!! 이번에 기업 코딩테스트를 보게 되었는데 예상치 못한 문제가 나와 매우 당황했었습니다.... 제가 평소에 풀던 괄호 문제는 대괄호, 중괄호, 소괄호 순서 상관없이 제대로 여는 괄호, 닫는 괄호가 정확하게 되어있다면 문제를 풀 수 있었던 유형이었습니다. ex) { ( [ [ ] ] ) } <-이건 스택으로 풀면 len(stack)==0 이 나와 answer=YES 가 되는 식의 문제였는데.... 이번 코딩테스트에서는 세상에... 여는 괄호, 닫는 괄호가 정확히 되어있는 조건에 + 무조건 대괄호 , 중괄호, 소괄호 이 순서를 유지해야한다는 조건이 있었습니다. 한마디로 ex) { ( [ [ ] ] ) } <- 이건 중괄호가 제일 바깥에 있고 소괄호 안에 대괄호가 있으니 성립하지 않고 [ [ { { ( ) } } ] ] <- 이런 식으로 괄호가 유지되어야만 성립이 되는 문제라고 하더군요..... 결국 코딩테스트 탈락의 고배를 마시게 되었는데... 저 상황이라면 어떤식으로 접근을 해야하는 걸까요? 지원자들의 후기를 들어보니 해쉬 셋으로 풀면 된다고 했지만 그 코드를 어떻게 작성해야할지 몰라 매우 난감한 상황입니다..
-
해결됨자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
선생님이 풀어주신 코드와 로직은 같은데 왜 채점은 타임에러 뜨는지 모르겠습니다.
선생님이 풀어주신 코드는 한번 더 확인하는 과정을 거쳐서 board의 수만큼 시간 복잡도가 그만큼 더 늘어나는 것 같아서 익지 않은 토마토의 개수를 세어서 그 수만큼 익으면 days를 반환하는 코드를 짰는데 왜 타임에러가 발생하는지 궁금합니다. 제가 놓치고 있는 부분이 무엇일까요?..package testSection8; import java.util.LinkedList; import java.util.Queue; import java.util.Scanner; class Point{ int x,y; Point(int x, int y){ this.x = x; this.y = y; } } public class Main{ static int n,m,days=0,total=0,cnt; static int[][] board; static int[] dx = {-1,0,1,0}; static int[] dy = {0,1,0,-1}; static Queue<Point> q = new LinkedList<>(); public int BFS(){ while (!q.isEmpty()){ days++; int size = q.size(); for(int i=0; i<size; i++){ Point point = q.poll(); for(int j=0; j<4; j++){ int nx = point.x+dx[j]; int ny = point.y+dy[j]; if(nx>=0 && nx<n && ny>=0 && ny<m && board[nx][ny] == 0){ if(++cnt == total) return days; board[nx][ny] = 1; q.offer(new Point(nx,ny)); } } } } return -1; } public static void main(String[] args) { MainT = new Main(); Scanner sc = new Scanner(System.in); m = sc.nextInt(); n = sc.nextInt(); board = new int[n][m]; for(int i=0; i<n; i++){ for (int j=0; j<m; j++){ board[i][j] = sc.nextInt(); if(board[i][j] == 1) q.offer(new Point(i,j)); else if(board[i][j] == 0) total++; } } System.out.println(T.BFS()); } }
-
미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
와 이제 슬슬 어려워 지는것 같네요.
2차원 배열이라 이중 for문이 편해서 이중 for문으로 풀어 보았습니다.function solution(array) { let answer = []; let sum1 = Array.from({ length: array.length }, (v, i) => 0); let sum2 = Array.from({ length: array.length }, (v, i) => 0); let sum3 = 0; let sum4 = 0; for (let i = 0; i < array.length; i++) { for (let j = 0; j < array[i].length; j++) { sum1[i] += array[i][j]; sum2[i] += array[j][i]; if (i === j) sum3 += array[i][j]; if (i === array.length - 1 - j) sum4 += array[i][j]; } } const maxSum1 = sum1.sort((a, b) => b - a); const maxSum2 = sum2.sort((a, b) => b - a); answer.push(maxSum1[0]); answer.push(maxSum2[0]); answer.push(sum3); answer.push(sum4); return answer.sort((a, b) => b - a)[0]; } console.log( solution([ [10, 13, 10, 12, 15], [12, 39, 30, 23, 11], [11, 25, 50, 53, 15], [19, 27, 29, 37, 27], [19, 13, 30, 13, 19], ]) );코드 피드백 해주시면 정말 감사하고 아니여도 괜찮습니다!
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3-F 괄호의 의미가 누적합으로 풀어라는 뜻이었군요
괄호를 넣네 마네 (,),안넣 3가지 경우 시간 복잡도 3^n인가 고민 하고 있었는데 풀이가 완전 다른거 였네요근데 정답이 -21억(=2^31)~21억인데 왜 ret=-9억~ 이렇게 해도 맞는거죠? ㅠㅠ
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3-O 15684 사다리조작 질문입니다.
안녕하세요. 해설 코드 중에 질문이 있습니다.go 함수에서void go(int here, int cnt) { if (cnt > 3 || cnt >= ret) return; if (check()) { ret = min(ret, cnt); return; } for (int i = here; i <= h; i++) { for (int j = 1; j < n; j++) { if (visited[i][j] || visited[i][j - 1] || visited[i][j + 1]) continue; visited[i][j] = 1; go(i, cnt + 1); visited[i][j] = 0; } } } for (int j = 1; j < n; j++)j 에 대한 for문을 제 생각에는 n을 포함하지 않아야 한다고 생각합니다. 그렇게 돌리면 정답으로 처리가 되기도 하고요. 그런데 n을 포함하면 N번째 세로선에서 오른쪽으로 이동하는 가로선이 추가될 수 있는건데 실제로 그렇게 추가할 수 없잖아요? 그럼에도 불구하고 n을 포함하여 코드를 실행해도 왜 정답처리 되는건지 궁금증이 생겼습니다. 예를 들어 가능한 반례로써 for문에서 j = n 인 경우 N번째 세로선과 가상의 N+1 번째 세로선 사이에 가로선이 2개만 추가되어도 check에서 true를 반환할 것인데 이런 반례가 존재하는 경우는 전부 가로선을 전혀 추가하지 않아도 되는 경우뿐이라 cnt = 0에서 바로 끝나서 그런게 아닌가 합니다. j 를 n보다 큰 수 까지 가능하게 범위를 설정해서 돌리면 실제로 틀리지는 않고 시간초과만 뜨긴 합니다. 결과적으로 j = n 까지 가능하게 하는것이 답을 계산하는데는 틀리지는 않지만 조금 비효율적이지 않나 싶습니다. 이론적인 실제 범위인 j를 n - 1까지로 설정하면 시간이 33%정도 줄어들기도 하고요.이부분에 대해 어떻게 생각하시는지 질문드립니다.
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
[5_R]문제해설에서 100의 의미가 무엇인가요?
안녕하세요! 문제 해설 : http://boj.kr/db0d13a9155748f38feda4624064efd9에서, move함수나 ismal함수에 '인덱스가 100이면' 이라는 조건이 있는데 이 부분이 잘 이해가 안됩니다. ㅜㅜ.말이 윳놀이 판에서 통과한 경우를 의미하신건가요?? 만약 그렇다면, 다른 값이 아니라 100이라고 주신 이유가 있나요? 감사합니다!
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-C 메모리 초과 이슈
똑같이 쓴것 같은데 백준에서 메모리 초과가 뜨네요 ㅜㅜ 그리고 제 컴퓨터로 돌려봐도 출력이 1밖에 안나옵니다..ㅜㅜ 도저히 제 눈으로는 문제를 못찾겠네요 도와주세요~~https://www.acmicpc.net/source/69075967
-
해결됨코딩테스트 [ ALL IN ONE ]
최종 진도
안녕하세요, 혹시 최종 진도가 [섹션 9. [심화] Backtracking]까지 일까요? 아니면 다른 부분도 추가로 업데이트가 될까요?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
이렇게 아이디어를 요구하는 문제도 자주 출제되나요?
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 선생님 실제 코딩테스트에서도 이렇게 수학적 아이디어를 사용한 문제들이 자주 출제되나요?
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
cin에 대해서 질문이 있습니다.
for(int i = 0; i < R; i++){ for(int j = 0; j < C; j++){ cin >> a[i][j]; } } 답안 코드에서 입력을 받을 때 사용하신 코드입니다.cin은 개행문자 이전까지 입력받는 것으로 알고있는데, char 형 배열에 사용될 때는 다른 방식으로 작동하는 건가요?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
8-H maxN 설정
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요. 강사님, 이 문제를 풀다가 maxN의 크기를 39로 정한 이유를 알고 싶어서 문의드립니다. 문제에서는 n이 충분히 클 때, 1 ≤ M ≤ 230-1 이라는 조건만 있는데요. 코딩테스트 풀 때, 이런 제한에서 max_N을 설정하는 것이 어려운데, 어떤 원리로 정하는지 알고 싶어요. 이와 별개로, 제가 코딩테스트 그동안 7여개 정도 풀었는데,다 성적이 좋지 않더라고요...ㅜ - ㅜ혹시 만약에, 추후 강의 보강이나 자료 업데이트 계획이 있으시다면, 코딩테스트 직전에 보면 좋을 정리 올려주시면 너무 좋을 것 같습니다.
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
4-A 질문입니다,
맵을 이용해 key와 value 활용에 대해 궁금한점이 있어 질문남깁니다. 일단 맵 key요소는 중복이 안되는것으로 알고있습니다. ret_v[ret].push_back(v) 를 하게되면 ret이라는 키에 벡터를 넣는건데 만약 가격이 700짜리가 2개있다 치면 키가 충복이 되어 오류가 뜨는것이 아닌가요? 혹시 다른방법으로 vector<pair<int,vector<int>>> ret_v 이것으로도 구현이 가능한지 궁금합니다.
-
미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
map과 filter를 이용하여 풀어보았습니다.
반복문 한가지로 해볼려고 했으나, 안될것 같네요 ㅠㅠ function solution(array) { return array.map((v) => { return array.length - array.filter((z) => v >= z).length + 1; }); } //console.log(solution([87, 92, 92, 92, 76])); console.log(solution([87, 89, 92, 100, 76]));
-
미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
sort 사용해도 괜찮은 걸까요?
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
5-H 13144
등차수열의 합이 등장하는 이유를 잘 모르겠습니다.교안에도 공식만 나와있고 언제 활용해야 하는지에 대한 정보는 안 담겨 있어서요.그냥 직접 세 보니까 어라? 등차수열의 합 공식의 결과랑 동일하니까 이걸로 가자!라는 논리로 등장한 것인가요?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
1주차 개념 #10. 구현과 문제를 푸는 방법의 기초(질문 있습니다)
자바스크립트 같은 경우에는 배열 메서드를 까먹었다 싶으면 MDN 사이트를 들어가서 찾아보잖아요? C++도 비슷한 사이트가 있나요?
-
해결됨2주만에 통과하는 알고리즘 코딩테스트 (2024년)
정수론 강의 관련 질문입니다.
정수론의 22분 경의 문제가 이해가 안되어서 질문드립니다. 176~177 사이라는 조건에서는 176은 16으로 완전히 나누어떨어져서 16 + 소수(1) = 17은 이해했는데,22분~ 즈음에 4같은 경우에는 2가 두번이라 4라는 뜻이 이해가 안됩니다. 176과 같은 논리면 4는 2로 나누어떨어지니 2가 나와야 되는거 아닌가 생각이 들어 질문드립니다. 위의 연장선으로 27분 즈음에 2^0 은 1 이니 82로 나누어지는 숫자들의 수 만큼 + 1*(8/2)4로 나누어떨어지는 숫자들의 수 만큼 + 2*2여기까지는 이해8로 나누어떨어지는 숫자들의 수만큼은 + 4*1여기서는 4*1 이 아니라 3*1 이 아닌지1,2,4,8 이 약수가 되는데 1은 이미 처리 했으니 1은 제외해서 3 * 1 더해져야될 것 같은데 ㅠ 수학을 못해서 좀 어렵네요 답변주시면 감사하겠습니다.
-
해결됨독하게 C를 배운 사람을 위한 선형 자료구조
섹션4 범위검색 강의 질문있어요.
올려주신 자료 04_RangeSearch02에서 void SearchByAge(void) 함수 마지막 부분 질문있습니다.SearchByAgeRange함수에서 동적할당한 주소를 리턴하고void **pResult로 받았습니다. void** pResult = SearchByAgeRange(min, max, &cnt);USERDATA* pTmp = NULL;for (int i = 0; i < cnt; ++i){ pTmp = (USERDATA*)pResult[i]; printf("%d, %s, %s\n", pTmp->age, pTmp->name, pTmp->phone);}free(pResult); <----요부분입니다.이제 해제를 해줘야 하는데요free(pResult)를 한 번에 해도 괜찮은건가요?아니면 for문 돌릴 때 free(pResult[i])로 해야하나요?
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
사이클
그래프의 특정 정점에서 출발하여 돌아다니다가 다시 처음 출발했던 곳으로 되돌아 갈 수 있으면 사이클이 있다고 하는데4분 40초에 있는 이 그림에서 0-1-2를 잇는 사이클이 있는 것 아닌가요..? 왜 사이클이 없는건지 궁금합니다!
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
공간복잡도 질문있습니다.
공간복잡도 질문있습니다.1.최대 범위<-코딩테스트에서 이것만 보고 풀어라2.메모리 제한 100,000만까지는 ok을 두고 풀라고 하셨는데https://www.acmicpc.net/problem/14502 이문제에서 최대범위인 (3 ≤ N, M ≤ 8) 3*8인 24까지 보고 풀면 되는건가요? 혹시 최대 범위도 제한이 있나요?