묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-S 자바스크립트 코드 질문있습니다!
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. http://boj.kr/4407e944ea384e408f615a6ef1ca8be5http://boj.kr/b5895e45632846f2b6f7448082492dda안녕하세요.2-S 문제를 자바스크립트로 구현해보았는데 첫번째 링크의 코드와 두번째 링크 코드의 차이는 그래프를 맵으로 구현한 것과 배열로 구현한 것 차이라고 생각합니다.맵 자료형의 Value에 해당하는 부분도 배열로 구현했기에 두 코드의 시간복잡도가 동일하다고 생각했는데 첫번째 링크는 통과하고 두번째 링크는 시간초과가 나옵니다.맵으로 구현한 코드가 O(V+E)라면 배열로 구현한 코드가 O(V*E)라서 시간초과가 나는걸까요??감사합니다!
-
해결됨자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
4. 단어 뒤집기 풀이방식 질문
선생님 안녕하세요. 풀이 방식에 질문이 있어 질문드립니다.선생님이 강의에서 풀어주신 방법과 다르게 저는 아래 코드처럼 작성을 했는데요. 저랑 풀이 방식이 크게 다른거 같아 제 풀이가 문제에서 원하는 풀이 방식이 아닌가 싶어 질문드립니다. 🙂 import java.util.Scanner; public class Main { // 문자열 뒤집는 메서드 public String solution(String str) { String answer = ""; char[] ch = str.toCharArray(); // 반복문 역순으로 돌리기 for (int i = ch.length - 1; i >= 0; i--) { answer += ch[i]; } return answer; } public static void main(String[] args) { Main main = new Main(); Scanner scanner = new Scanner(System.in); int number = scanner.nextInt(); while (number > 0) { System.out.println(main.solution(scanner.next())); number--; } } }
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
질문 있습니다.
항상 감사드립니다 선생님!
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3-L 질문 있습니다!
안녕하세요 선생님, 항상 강의 잘 보고 있습니다!!이 문제 답의 visited가 1차원 배열이냐, 2차원 배열이냐에 따라서 시간복잡도 차이가 3배이상 나더라구요.배열과 관련한 연산은 인덱스를 통한 참조와 삽입밖에 없는데 이렇게 차이가 많이 나는 이유가 뭘까요?2차원 배열을 사용해서 통과한 답 첨부해드립니다. 감사합니다.http://boj.kr/8e9b226e7708455da2bee2555f8403db
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
영화수집 문제) 카운팅트리에서 궁금한게 생겼습니다.
인덱스를 음수로 사용할 수 없으니까 처음의 값들을m최대값 10만이니 10만1 이상의 값에 값을 할당하셨는데.그런데 10만2부터 사용하시고 10만1은 사용하시지 않으셨더라구요. 그래서 이해하는 과정에서 중요한건가 싶어서 10만도 해보고 10만1부터도 해보았습니다.예로update_idx = 100000Update(update_idx , 1);mp[temp] = update_idx--;이렇게 수정해보았습니다. 범위에 딱 맞으니까 10만개까지 딱 정보가 들어올 수 있게되는데sum에서 잠시 생각해보니 tree[0] 인덱스에 10만번째 정보가 들어올 것이라고 생각이 들어서요while(i>=0) 으로 바꾸어보았는데 .. (ㅋㅋ 왜 [1] 부터 하시라는지 알았습니다..) 당연히 무한루프를 돌았고다시 while(i>0)으로 수정했는데 정답이 떴습니다.사실 오답이어야 하는게 아닌가 싶어 질문드립니다.
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
1-M 백준 3986 질문 드립니다
안녕하세요 큰돌님:)백준 3986 문제에 대해서 질문드리고 싶은 게 있습니다!http://boj.kr/00e868dc6fea4a5cbcb0048b32aed50b위의 코드와 같이 st.push(s[0]); 을 먼저 한 다음 j=1 부터 반복문을 시작하면 왜 21112 segmentation fault 오류가 나오는지 궁금합니다..ㅜㅜ 그리고 제가 1주차 문제를 풀고 있는데 거의 3개 중에 하나 꼴로 틀리고 어떨 땐 연속으로 계속 틀리는데강의를 들으면 설명을 잘해주셔서 이해안되는 부분 없이 전부 이해가 가긴 합니다.. 접근법을 배우는 거에 의의를 두고 틀려도 계속 진도 나가면서 풀고있기는 한데 자꾸 틀리니까 위축이 되어서요..ㅠㅠ지금처럼 꾸준히 진도 나가는 것이 맞을까요?? 제 수준에서는 다시 교안으로 돌아가야 하는지.. 모르겠습니다 조언해주시면 감사합니다..!마지막으로 선생님께서 올려주신 추천문제들만 복습해서 봐도 코테 마스터 할 수 있을까요..? ㅜㅜ 아니면 다른 문제들도 함께 겸해서 공부해야하는지 궁금합니다감사합니다.
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
질문 있습니다.
처음 강의 들을 때에는 BFS, DFS기본 문제도 못풀었는데 풀었던 문제들 다시 풀어보고 또 풀어보면서 BFS, DFS, 조합 등에 익숙해지니 이런 문제들도 혼자 풀 수 있는 날이 오네요 ㅠㅠㅠhttp://boj.kr/9831abd022b2486f9421eb048c8ae62d제 나름대로 배웠던 지식들 활용해서 풀어봤습니다. 선생님 풀이보다 10ms정도 시간이 더 느린 것은 메모리를 복사하는 과정에서 늦어지는 것일까요?
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2 - L 어디가 틀린건지 모르겠습니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.http://boj.kr/479470df1029497d9df3d10d7ce3e633방식은 현재 골 넣은 시간을 입력 받고 원래 이기고 있던 상황이거나 상대가 골 넣었는데도 아직도 이기고 있는 상황에서 이전 시간과 현재 시간의 차이 만큼 팀의 승리 시간에 추가하는 방식입니다.두 팀의 골이 같아진 경우에는 마지막으로 골을 넣은 팀의 상대 팀의 승리 시간을 추가했습니다.마지막으로는 경기 종료 48분까지 이기고 있는 팀의 시간을 추가해서 출력했는데 예제 3번까지는 맞게 나오는데 제출해보면 틀리다고 나옵니다. 어디가 틀린 걸까요?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
M2 셋팅 관련하여 질문드립니다.
안녕하세요 선생님 알고리즘 교안 m2 초기 셋팅 관련하여 아래와 같이 질문드립니다.brew는 설치 완료 하였고 bits/stdc++.h 파일 생성에서 문제가 되는데요.아래과 같은 경로로 가서 코드 모두 복사하고 vi편집기를 빠져 나오게 되면 아래와 같이 파일 생성이 되지않습니다.이후 파일 생성이 되지 않아 다시 파일을 생성하려고 하면 스왑하라는 두번째와 같은 창이 뜨게됩니다.확인한번만 부탁드립니다.
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
1주차 개념 #7. 문제로 연습하는 시간복잡도 Q5 강의 질문있습니다.
안녕하세요 수민님 ㅎㅎ해당 함수에서 시간복잡도가 어느정도 큰 주요 로직이라고 보시면 됩니다. 예를 들어#include<bits/stdc++.h> using namespace std; int N, cnt; void solve(int N){ cnt++; cout << cnt << '\n'; if(N == 0) return; for(int i = 0; i < 3; i++){ solve(N - 1); } return; } int main(){ cin >> N; solve(N); return 0; } 이 solve라는 함수에서 주요한 로직은 for(int i = 0; i < 3; i++){ solve(N - 1); } 이부분입니다.---------------------------------------------------최근 질문에 큰돌님께서 작성하신 답변을 제가 일부 가져왔습니다.여기서는 메인 로직 즉, 주요 로직이 반복문이라고 설명하셨는데, 강의 5:22초에는 메인 로직이 출력문이라 O(1)이라고 말씀하십니다. 강의내용과 질문게시판 답변 중 뭐가 맞는 건가요?
-
해결됨코딩테스트 [ ALL IN ONE ]
노션 링크 신청했습니다 ~
노션 링크 신청했습니다 ~ 감사합니다.
-
미해결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만 보이고 코딩테스트쪽은 공유된 문서가 안보여서요!!메일 이후에 따로 공유해주시는건지 궁금합니다.😀