묻고 답해요
131만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
6단원에 대해서.
안녕하세요 선생님. 강의 잘 듣고 있습니다.오늘 기점으로 2단원 dfs/bfs 다 끝나서 3단원 완전탐색 백트래킹 단원을 공부 시작하려고 합니다.다름이 아니라6단원( 이분탐색, LIS ) 은 4,5단원을 먼저 공부하고 난 뒤 듣는게 더 효율적일까요? 아니면 3단원 끝나고 들어도 될까요? 학교와 병행중이라서 중간고사 전에는 3단원을 끝낸 후 4,5단원을 하기 전에 문제 수가 그나마 적은 6단원을 먼저 들으려고 하는데 단원이 뒤에 있어서 이유가 있을까 싶어 질문하게 되었습니다!
-
미해결it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비
7번 다양한 풀이 도전 중 오류
7번을 강의해주신 대로도 풀어보고 다른 형식으로도 풀어보고 싶어서 다음과 같은 코드를 짜봤는데, 대문자에서 소문자로 변환은 잘 이루어지지만 중간에 포함된 띄어쓰기가 나타나면 거기서 멈춘 상태로 출력이 됩니다. 이유, 그리고 어떻게 수정해야 할 지가 궁금합니다.예시) 입력: BeA UT I ful, 출력: bea #include <iostream>#include <vector>#include <algorithm>#include <string>using namespace std;int main(){ ios::sync_with_stdio (false); cin.tie (NULL); cout.tie (NULL); string str; cin >> str; vector<char> answer; for(int i=0; i<str.size(); i++){ if(str[i]!=' '){ if(str[i]>=65 && str[i]<=90){ answer.push_back(str[i]+32); } else{ answer.push_back(str[i]); } } } for(int i=0; i<answer.size(); i++){ cout << answer[i]; }}
-
해결됨코딩테스트 [ ALL IN ONE ]
노션 링크 공유 부탁드립니다.
내일 부터 학습 시작하려고 합니다.노션 링크 공유 부탁드립니다ㅎㅎ
-
미해결자바 코딩테스트 - it 대기업 유제
잃어버린 강아지 문제 count 관련 질문있습니다
안녕하세요 강사님 강의 잘 듣고 있습니다!잃어버린 강아지 문제에서 count관련 이해가 안되는 부분이 있어서요. 관련 부분만 가져왔는데 count는 처음에 0으로 초기화 된 상태에서 while문에 들어가자마자 1이 증가하고, 마지막으로 들어갈 때는 9999상태에서 들어가서 10000이 되고, 그시점에 마지막 번째 while을 실행하면서 현수가 강아지를 찾아서 x1 == x2 && y1 == y2이 된 후 break(사실상 while문이 끝나서 break된거나 마찬가지지만)될수도 있는건데 강아지를 못찾고 반환하는 0을 리턴하는 조건이 count >= 10000이 되면 10000번째에 찾더라도 못찾은걸로 표현될수 있지 않나 싶어서요.그런데 이런 생각을 하다보니까 그러면 진짜로 10000을 넘을때까지 못찾는 경우는 어떻게 알수 있게 되지? 라는 생각이 들면서 정리가 안되기 시작했습니다. ㅠㅠ count가 while안에 있기 때문에 10000번째에 딱 찾고 끝나고 나면 더이상 count를 올려줄 방법이 없는데, 어떻게 해야 만번 이상을 했고 그래도 찾을수 없었던걸 증명할수 있을지...일단 생각으로는 while을 true로 해놓고 break하는 조건을 하나 더 둬서 if(x1 == x2 && y1 == y2) break; 아래에 if(count == 10000) break;나 if(count >= 10000) break; 이렇게 하는 방법이 떠오르긴 하는데 이렇게 해도 괜찮을지, 강사님이 해주신 코드로 충분한데 제가 이해를 못하고 있는것일지.. 설명 늘 자세히 해주시는데도 질문해서 죄송합니다🥲 항상 감사합니다int d1 = 0, d2 = 0, count = 0; while (count < 10000) { count++; int nx1 = x1 + dx[d1]; int ny1 = y1 + dy[d1]; int nx2 = x2 + dx[d2]; int ny2 = y2 + dy[d2]; boolean flag1 = true, flag2 = true; if (nx1 < 0 || nx1 >= n || ny1 < 0 || ny1 >= n || board[nx1][ny1] == 1){ d1 = (d1 + 1) % 4; flag1 = false; } if (nx2 < 0 || nx2 >= n || ny2 < 0 || ny2 >= n || board[nx2][ny2] == 1){ d2 = (d2 + 1) % 4; flag2 = false; } if(flag1 == true){ x1 = nx1; y1 = ny1; } if(flag2 == true){ x2 = nx2; y2 = ny2; } if(x1 == x2 && y1 == y2) break; } if (count >= 10000) return 0;
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
범위 최댓값 기준 질문드립니다
범위 확인 후 배열 선언할때 만약 n이 10,000 이하라고 하면 n[10004] 이런식으로 선언하는데 문제마다 코드를 보면 어떤건 n[10001] 어떤건 n[10004] 이렇게 선언되어있는걸 확인했습니다. 이게 이유가 있다면 정확이 어떤건지 그냥 의미 없는건지 궁금합니다. 10,000 이하라고 하면 n[10000] 이렇게 선언하는게 틀린 이유도 무엇인지 궁금합니다
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
LIS 질문
안녕하세요 선생님! 간단한 질문인데요,LIS 요소의 크기를 구하는 건 dp와 lower_bound() (또는 binary search), 이렇게 두가지 방법을 이용할 수 있는 것으로 이해했는데요.그럼 어떤 요소들이 있는지 trace하는 방법은 dp로밖에 구현을 못하는 걸까요? 즉, 무조건 O(N^2)이라는 시간복잡도를 가지는 건가요?미리 감사드립니다!
-
미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
이렇게 풀어도 괜찮을까요? sort와 map, while을 이용하여 풀었습니다.
<html> <head> <meta charset="UTF-8" /> <title>출력결과</title> </head> <body> <script> function solution(arr) { let answer = []; let arrCopy = arr.map((item) => item); let corrarr = arrCopy.sort(function (a, b) { return b - a; }); for (let i = 0; i < arr.length; i++) { let j = 0; while (j < corrarr.length) { if (arr[i] == corrarr[j]) { answer.push(j + 1); break; } j++; } } return answer; } let arr = [87, 89, 92, 100, 76, 89]; console.log(solution(arr)); </script> </body> </html>이렇게 풀면 문제가 있을까요??
-
미해결it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비
채점이 안돼요
비쥬얼스튜디오로 하는데 져지에서 이렇게 뜹니다ㅠㅠ 도와주실수 있나요??
-
해결됨코딩테스트 [ ALL IN ONE ]
노션 공유
안녕하세요!CS와 코딩테스트 두 과목 오늘 수강신청을 했고,공유해주셨다는 메일을 받았는데...노션을 보니 CS만 보이고 코딩테스트쪽은 공유된 문서가 안보여서요!!메일 이후에 따로 공유해주시는건지 궁금합니다.😀
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3-O 시간초과가 납니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. http://boj.kr/475f308856b14af58ad676f375a262f6선생님 다음 코드와 같이 만들어서 예제는 통과했는데 계속 시간초과가 납니다 ㅠㅠ 어떤 점이 문제인지 잘 파악이 안됩니다.
-
미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
투포인터 슬라이딩 방식이 아니면 어떻게 구현해야 하나요?
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 기존에 남겨주신 코드들 보면 합계를 이용해서 rt를 하나 증가시키고 lt도 합계에 따라 증가시키는 방식으로 이해습니다. 궁금한 부분이 lt에서 rt까지의 합이 아닌 lt와 rt 두 포인터의 합의 최소값으로 구현하려고 하니까 구현 방식이 greedy와 다를게 없어져서 어떻게 구현해야할지 잘 모르겠는데 어떻게 해야하나요? 현재 아래와 스니펫처럼 어떻게든 구현해보려고 하는데 구현하신 방식대로 하려고 하니 잘 풀리지 않습니다. for(int rt = 1; rt < arr.length; rt++){ sum = arr[lt] + arr[rt]; if(Math.abs(sum) < gap){ gap = Math.abs(sum); answer[0] = arr[lt]; answer[1] = arr[rt]; } while(lt + 1 < rt){ lt++; sum = arr[lt] + arr[rt]; if(Math.abs(sum) < gap){ gap = Math.abs(sum); answer[0] = arr[lt]; answer[1] = arr[rt]; } } lt++; }
-
미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
해쉬에서 맵을 쓰는 이유?
function solution(s) { let answer = s[0]; let count = {}; for (const i of s) { if (count[i]) count[i] += 1; else count[i] = 1; } for (const i in count) { if (count[i] > count[answer]) answer = i; } return answer; } let str = "BACBACCACCBDEDE"; console.log(solution(str)); 혼자서 풀어봤을 때는 맵을 쓰지는 않았는데, 혹시 해쉬 구조에서 객체 대신 맵을 사용해서 얻을 수있는 이점이 어떤 게 있을까요? 또, 위와 같은 방법으로 풀었을 때 문제는 없을까요?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
dfs 질문
안녕하세요 선생님. 보통 dfs, bfs 문제를 풀때입력 받은 값들을 인접행렬로 저장해서 풀지 인접리스트로 저장해서 풀지 할때마다 고민이 되는데보통 코테에서는 어느 것이 더 효율적인가요?값들이 밀집되어 있을때는 인접행렬, 값들이 서로 다 떨어져듬성 듬성 있을땐(?) 인접리스트가 더 낫다고 배웠긴 한데 문제에서 이를 판단할땐 쉽지가 않습니다..
-
미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
indexOf를 사용해서 반복문 하나 줄여봤습니다
function solution(test) { let answer = 0; let n = test.length; let studentNum = test[0].length + 1; // i는 멘토가 될 수 있는 학생 // j는 멘티가 될 수 있는 학생 for (i = 1; i < studentNum; i++) { for (j = 1; j < studentNum; j++) { if (i === j) continue; let flag = 0; // k는 n차 시험의 결과 for (k = 0; k < n; k++) { if (test[k].indexOf(i) < test[k].indexOf(j)) { flag++; } else { break; } } if (flag === n) answer++; } } return answer; } 각 시험 회차의 인덱스 번호가 학생의 번호다보니까 indexOf를 사용하면 반복문 하나 줄이고도 풀 수 있지 않을까 해서 이렇게 해봤습니다.
-
미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
코드리뷰 부탁드립니다!
function addEachDigit(num) { const str = String(num); const addedNum = str.split("").reduce((acc, prev) => acc + Number(prev), 0) return addedNum; } function solution(n, arr) { let answer = 0; for (const i of arr) { const addNum = addEachDigit(i); const maxAddNum = addEachDigit(answer); if (addNum > maxAddNum) answer = i; if (addNum == maxAddNum) { if (i > answer) { answer = i; } } } return answer; } let arr = [128, 460, 603, 40, 521, 137, 123]; console.log(solution(7, arr)); 늘 감사합니다.제가 풀어본 문제 중에서는 처음으로 선생님의 풀이와 완전히 다른 방식이라 이런 방식은 어떨지 견해를 들어보고 싶습니다.
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
칠무해 질문입니
선생님께서1000만이기 때문에 vector를 사용하면 안된다고 하셨는데강의를 보기전vector로 문제를 아래의 코드와 같이 풀었는데맞았다고 되서http://boj.kr/fa94483f56a4490090c8793c7293a8fb왜 되는건지 궁금해서 질문해 봐요
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
질문있습니다..!
안녕하세요 선생님. 좋은 강의 잘 듣고 있습니다.다름이 아니라 컴공과 학생이라 github를 만들어보고 싶은데 유튜브 강의를 봐도 어떻게 코드를 올리고 쉽게 조작하는지 쉽지가 않더라구요.. git를 다 설치하고 아이디는 만들었는데 레퍼토리를 올리고 조작하는게 너무 어렵네요:(혹시 github에 대한 영상이나 방법은 따로 올리신게 없을까요?항상 감사드립니다 선생님!
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
제 풀이와 답지 풀이가 다른 것에 대한 회고
제 풀이는 다음과 같습니다. 저는 h높이를 100까지 안가고 최대값까지만 고려하였고 ret 도 0으로 초기화하고 h--로 풀었습니다.http://boj.kr/2607607c3851456ea3ccd3544dc3044d이렇게 풀고 큰돌님 답지를 봤는데 높이에 대한 반복문 풀이가 달라서 이걸 어떻게 받아들이고 넘어가야 할지 몰라서 질문글을 올렸습니다.“다음에는 while문말고 답지처럼 for문으로 풀어야지” 라고 생각하고 넘어갈지 아님 “그냥 이렇게도 풀 수 있구나?” 라고 생각하고 다음에는 for이든 while이든 생각나는대로 풀면 될까요?정답이란 게 없긴 하지만 뭔가 정석대로 안풀면 안될거 같아서 이렇게 질문을 올립니다.
-
미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
lt.rt가 잘 이해가 가지 않습니다.
tree.root.rt = new Node(3);tree객체에서 root를 참조하고, root 객체의 rt 변수의 값을 3으로 설정하는 것은 이해했습니다.그런데, tree.root.rt.lt는 rt변수에서 lt를 접근하는 건가요..??변수에서 변수를 참조하는 것이 잘 이해가 되지 않습니다.감사합니다.
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
1-C 코드 질문입니다!
안녕하세요 큰돌님! 먼저 알고리즘 강의 너무 재밌게 잘 수강하고 있어 감사의 말씀 올립니다. 해설을 보기 전에 거의 유사하게 작성하였는데 질문이 있어 글 남깁니다 ㅎㅎ1. 요금 계산하는 for문을 조금이나마 덜 돌게 하려고 mi와 mx를 추가하였는데 이렇게 풀어도 괜찮을까요? 2. 코드에서 혹시 더 개선할 부분이 있을까요?http://boj.kr/ad45fb739bc84838aadd154abf5f3ed7