묻고 답해요
169만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
7-A 질문이 있습니다
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 강의 내용 1분~3분에서 말씀하신 내용이 이해가 가질 않습니다. a->d로 간다 했을 때 {a, b, c}의 최소값을 찾아서 d로 가면 된다고 하셨는데 제가 저 말뜻을 제대로 이해했는지는 모르겠지만 제가 생각했을 때는 저 셋을 가는 경로에서 최솟값은 아니어도 d로 갔을 때 최솟값이 되는 경로도 존재할 거라고 생각이 들어서 {a, b, c}경로의 최솟값에서 d로 가면 그게 또 최소 경로?가 된다는 건 이해를 잘 못하겠습니다. 코드를 따라 쳐보면서 코드 자체 만으로도 이해를 해보려 했는데 tfs함수 부분에서 ret을 저렇게 메모이제이션 처리를 하면 무슨 이득이 있는지 모르겠습니다. 제 생각에는 경로가 a b c d 라고 했을 때 (경로가 모두 0이 아니라고 했을 때)a b c da b d ca c b da c d ba d b ca d c b이런식으로 탐색을 할 거라고 생각이 드는데 결국 완전탐색 느낌으로 탐색을 한 게 아닌가? 라는 생각이 듭니다. if (ret != -1) return ret;이 부분이 메모이제이션을 써서 얻을 이득일텐데 저게 a b c d를 돌면서 작동을 하지 않을 거라고 생각이 드는데... 왜 저 코드가 필요한지 잘 모르겠습니다. 막상 실제로 저 부분 빼고 제출하니까 시간초과가 나기는 하는데 제 머리로는 도저히 이해가 안갑니다.
-
미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
조합 구하는 DFS 질문
numbers = [2, 1, 3, 4, 1] def dfs(L, s): global tmp if L == 2: num_list.append(tmp) tmp = list() return else: for i in range(s, len(numbers)): tmp.append(i) dfs(L+1, i+1) tmp = list() num_list = list() dfs(0, 0) print(num_list)인덱스를 [[0, 1], [0,2], [0,3], [0,4], [1, 2], [1,3], [1,4], [2, 3], [2,4], [3, 4]] 뽑고 싶은데[[0, 1], [2], [3], [4], [1, 2], [3], [4], [2, 3], [4], [3, 4]] 이렇게 나옵니다.6번 라인 tmp = list() > tmp.pop() 으로 수정하면 될 것 같은데 결과값은 안나오네요.어떤 부분을 실수했는지 감은 오는데 코드로 구현하는 법은 모르겠네요.도움부탁드립니다.
-
해결됨2주만에 통과하는 알고리즘 코딩테스트 (2024년)
정수론 백준 1407번 질문 있습니다.
안녕하세요.정수론 2로 몇번 나눠질까(#1407) 부분을 수강 하면서 궁금한 점을 질문드립니다.해당 문제를 접근할 때 팩토리얼로 푸시는 것을 볼 수있었습니다. 해당 문제 자체에는 팩토리얼에 대한 설명은 없었는데, 어떻게 팩토리얼을 떠올릴 수 있으셨는지 궁금합니다. 해당 문제와 비슷하게 출제가 되었을 때 접근 방법이 궁금합니다.#2247도 같은 카테고리로 넣어두셔서 같은 접근 방법인가 싶은데, 해당 문제도 접근법이 궁금합니다. (어떤 단어나 부분에서 이 문제는 이렇게 풀어야겠다고 느끼시는 건지 궁금합니다.)
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
1-I문제 / 시간 빡세다의 정의 궁금증
틀린 코드 : https://www.acmicpc.net/source/share/848fc68966ae4518833cbfa48bae9862 우선 강의를 보고 밑의 코드를 넣어서 문제는 해결한 상태입니다. 아마 시간초과 난 부분도 I/O 부분에서 많이 잡아먹어서 그런 것 같습니다. ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); 강의 내용 중에 시간초과가 빡세서 위의 코드를 넣어야 한다고 했는데, 코드를 넣는 것과는 별개로 어떻게 시간초과가 빡센지 문제를 풀면서 생각할 수 있을까요?? 제 논리구조는 아래와 같습니다. 첫 번째 반복문 O(NlogN)코드 상 첫번째 반복문에서는 입력을 N번 받고, map에 넣는 경우는 O(logN) 두 번째 반복문 O(M * (logN + T)) 우선 M번 반복하고, 반복할 때마다 문제를 받는데, 해당 문제의 input을 int로 변환하는 과정 O(T) (문자열 길이 T가정)map에서 탐색하는 과정 O(logN) => 총 시간복잡도 = O(N *( log(N) + T )(M과 N의 최대 범위 같으니 동치해 봤습니다)사실상 T의 길이도 최대 20이어서 미미해서 O(NlogN)이라고 판단했습니다. 저는 1초 = c++에서 1억번이라고 들어서 그것을 기준으로 잡고 해봤습니다.(혹시 이렇게 정의해도 되는건지요?) 단순히 입력값으로 계산만 해봐서는 100000 * log(100000) = 약 160~170만최대 20자인 문자열을 고려해도 => 약 3000만회널널하다고 생각 이렇게 해서 저는 시간초과가 생각보다 빡세지 않다고 생각했는데, 제가 한 논리중에 잘못된 부분이 있는지도 궁금하고, 어떻게 하면 이 문제에서 1초라는 시간초과가 빡세다는 점을 캐치할 수 있는지 궁금합니다.감사합니다
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3-J 시간 초과 원인을 파악하기 어렵습니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. http://boj.kr/edd8ff505fdf4958ad6c322bae97ec8d 혹시 로직에 문제가 있어 시간 초과가 생기는 것인지, pair를 사용해서 시간 초과가 생기는 것인지 궁금합니다. 만약 pair를 사용해서 시간 초과가 생기는 것이라면, 제 생각에는 pair가 큰 영향을 주지 않을 것으로 생각되는데 혹시 어떤 이유에서 pair가 실행 시간에 영향을 줄 수 있는지 궁금합니다. 또, 만약 그렇다면 코딩 테스트에서 pair를 사용하지 말아야 할 경우를 어떤 근거로 판단할 수 있을지 궁금합니다.
-
미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
splice 를 이용해서 풀어봤습니다. 이렇게 풀어도 될까요?!
처음에 answer을 배열로 만들게 되서 중복제거와 join 을 시키게 되면서 코드의 양이 좀 많아진거 같습니다.function sol(arr) { let answer = arr.split(''); let s = arr[0]; let ctn = 1; for (let i = 1; i < arr.length; i++) { if (arr[i] === s) { s = arr[i]; ctn++; } else { s = arr[i]; if (ctn > 1) { answer.splice(i, 0, ctn); ctn = 1; } } } answer = new Set([...answer]); answer = [...answer].join(''); return answer; } console.log(sol('KKHSSSSSSSE'));
-
미해결입문자를 위한 코딩테스트 핵심(이론과 문제풀이) [Python]
동적계획법에 관한 수업 내용
선생님 이 강의는 동적계획법 문제풀이에 대해서는 따로 이론이나 그런건 없는거 같은데 다른 알고리즘을 활용하는 방안으로 문제를 풀 수 있기 때문에 따로 강의를 안찍으신건지 궁금합니다.
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
순열 조합은 시간복잡도 n!인가요?
n이 너무 커지면 못쓰겠네요??
-
미해결자바 코딩테스트 - it 대기업 유제
질문 있습니다!!
강의 너무 잘 보고 있습니다!!!백엔드 Java 개발자를 꿈꾸는 대학생입니다!!다름이 아니라 혹시 강의에서 배운 내용을 제 개인 블로그에 정리해도 될지 궁금해서 글 남깁니다!!!
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
1781번 질문있습니다
https://www.acmicpc.net/source/share/60c52b6bc2b540bb8d1b1a57d4ce090d기존에 문제를 풀었던 2109번과 동일한 로직이라고 생각되어처음풀때 사용했던 제 로직을 이용하니 문제가 틀렸다고 나와서요, 추후에 큰돌님이 2109번강의해주셨을때 사용했던 로직도 같은로직이라 생각되어 해당 소스를 사용시 정답이 되어서 이부분이 잘이해가 안가서 질문을 남깁니다
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2차원 배열 회전 강의 올려주시면 안될까요
교안만 봐서 잘 모르겠습니다 ㅠㅠ
-
미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
숫자만 추출 문제 풀어봤습니다. 코드리뷰 부탁드립니다.
지난시간에 배운 정규식 이용해서 풀어봤습니다. 항상 강의 잘 듣고 있습니다. 감사합니다.function sol(s) { let answer = ''; s = s.replace(/[^0-9]/g, ''); answer = s.indexOf(0); answer = s.substring(answer + 1, s.length); return answer; } console.log(sol('g0en2T0s8eSoft'));
-
미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
팰린드롬 문제
선생님 앞 강의에서 말씀 해 주신 s.length -i -1 로 풀고싶어서 아스키코드를 이용해봤는데 if 문을 열고 소문자 대문자 일 때만 돌게끔 범위를 설정해줬습니다.이런 방법으로는 풀수없는걸까요 ? s[i] !== s[s.length -i -1] 일때는 'NO' 를 출력하게끔 했는데 맞는 문자열이 들어가도 'NO'를 출력하더라구요 ㅠㅠfunction solution(s) { let answer = 'YES'; s = s.toLowerCase(); for (let i = 0; i < Math.floor(s.length / 2); i++) { if ( s[i].charCodeAt() >= 65 || s[i].charCodeAt() <= 90 || s[i].charCodeAt() >= 97 || s[i].charCodeAt() <= 122 ) { if (s[i] !== s[s.length - i - 1]) { return 'NO'; } } } return answer; } console.log(solution('found7, time: study; Yduts; emit, 7DnuoF'));
-
미해결입문자를 위한 코딩테스트 핵심(이론과 문제풀이) [Python]
도전 과제 문제 정답
선생님 안녕하세요 도전과제 문제 정답코드는 어디서 확인할 수 있을까요!?
-
해결됨SQL 코딩테스트를 위한 첫 걸음
work bench 설치관련 문의
안녕하세요 윈도우 환경에서 work bench 설치 관련하여 문의드립니다.영상 상으로는 Developer default로 설정해서 설치하는 걸로 되어 있는데 저는 따로 그 옵션이 없습니다.Custom으로 설정해서 pdf 파일에 본대로 똑같이 설치하면 Workbench가 설치가 안되서요사진 첨부 합니다 확인부탁드립니다..!
-
해결됨2주만에 통과하는 알고리즘 코딩테스트 (2024년)
완전탐색 1816번 암호 키 문제 질문
안녕하세요!백준 1816번 암호 키 문제에 관한 질문이 있는데요우선 제가 초급자라서 허접한 질문이어도 양해부탁드립니다.for-loop이 100만째 되는 시점에 "YES"를 print 하는건 이해가 되는데요.제가 아래 두번째 코드에 적은 것처럼 어차피 100만에서 for-loop이 종료되니까 print("YES")를 해주면 된다고 생각했는데 백준에 두번째 코드를 제출해보니까 틀린 답이라고 나오더라구요.혼자 고민을 해보았는데 결론이 나오질 않아서 질문드립니다.강의에서 보여주신 것처럼 첫번째 코드에서 i == 100만이라는 조건을 붙여줘야 하는 이유가 무엇일까요??감사합니다.n = int(input()) for _ in range(n): tc = int(input()) for i in range(2, 1_000_001): if tc % i == 0: print("NO") break if i == 1_000_000: print("YES") #---------------------------------- n = int(input()) for _ in range(n): tc = int(input()) for i in range(2, 1_000_001): if tc % i == 0: print("NO") break print("YES")
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
5-P 질문이 있습니다!
http://boj.kr/511ca2fd92df4f8886ede64c256bd10e안녕하세요 선생님!재귀를 이용하여 양옆의 톱니들과 비교해 계속해서 갱신해 나가는 방법으로 로직을 구현하였습니다.테스트 케이스로 테스트 중 일부는 맞고 일부는 틀리게 결과가 나옵니다.디버깅도 해보았으나 적절한 문제점을 찾지 못하였습니다.혹시 로직에서 틀린 부분이 있을까요?제 눈이 더 이상 보이지 않아서 질문 드립니다ㅠㅠ
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
1-B counting star 질문
안녕하세요 선생님for(char a : str){cnt[a - 'a']++;}이 부분이 이해가 잘 되지 않습니다..ㅠㅠ cnt[a-'a']++ 이면 cnt[0]의 인덱스만 증가한다는 거 아닌가요??아니면 여기서 a가 str배열을 나타내고 있는 것인가요?어떤 메커니즘인지 잘 모르겠습니다ㅠ
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
질문있습니다.
문제 : 긍정왕 홍철이의 구걸 여행제가 코드는 다 맞았는데 ny,nx를 전역변수로 해주니 값이 다르던데 왜 다른지 잘 모르겠습니다.보통 ny,nx는 지역변수로 해줘야 하나여?#include <bits/stdc++.h>using namespace std;int a[3][3] = {{10,20,21},{70,90,12},{80,110,120}};const int dy[] = {-1,0,1,0};const int dx[] = {0,1,0,-1};int visited[3][3];int ny, nx;vector<int> v;void print() { for(int i : v) cout << i << ' '; cout << '\n';}void dfs(int y, int x) { visited[y][x] = 1; v.push_back(a[y][x]); if(y == 2 && x == 2) { print(); return; } for(int i = 0 ; i < 4 ; i++) { ny = y + dy[i]; nx = x + dx[i]; if(ny < 0 || ny >= 3 || nx < 0 || nx >= 3) continue; if(visited[ny][nx]) continue; dfs(ny,nx); visited[ny][nx] = 0; v.pop_back(); }}int main() { dfs(0,0);}
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
1-A 일곱난쟁이 공유 소스 오류 질문
선생님께서 올려주신 공유 소스를 dev c++ 컴파일 하였을 때 오류가 납니다 ㅠㅠ 문제가 무엇일까요? 마지막 for(int i : v) cout << i << " "; 여기서 빨간 표시가 뜨더라구요..!!http://boj.kr/6b0acb8d4af043f88800c74b72d7761010 9 C:\Users\PC\Desktop\AA\main.cpp [Warning] extended initializer lists only available with -std=c++11 or -std=gnu++1129 14 C:\Users\PC\Desktop\AA\main.cpp [Error] range-based 'for' loops are not allowed in C++98 mode