묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결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
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
4-F 질문입니다
안녕하세요 선생님!무식하게 조합으로 푼다고 생각했을 때 시간복잡도를 계산해보니antic는 제외하므로 21개의 알파벳중에서 7개, 21C7 이라서 조합으로 풀려고 다음과 같이 코드를 만들었는데 왜 틀렸다고 하는지 이해가 안가요. 혹시 반례가 있나요?http://boj.kr/8bf7e596582f4ea9b3fc75f6720c95ec
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-I 문제
http://boj.kr/5a5b03f202154898a9edff9a950a5e30 이렇게 풀어봤는데 왜 틀렸을까요? 출력은 같게 나오는데..
-
해결됨코딩테스트 [ ALL IN ONE ]
노션 공유
노션 공유 해주셨다고 했는데 cng121958@gmail.com으로 다시 공유해주실 수 있나요? 공유가 아직 안된 것 같습니다..
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
[8-J] 3635: 영화 수집 질문
안녕하세요 큰돌님~8-J 팬윅트리 강의를 듣고 좌표이동 코드를 반영한 코드를 작성해보았는데요~ 백준에서 계속 틀렸다고 나와서 질문드립니다..http://boj.kr/70d1231d67094c51b254c2c6b9c34d65
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
c++ 교안에서 질문이 있습니다
안녕하세요 큰돌님! c++ 교안으로 공부를 하다가 궁금한 점이 있습니다.41쪽에 한글이 한 글자당 3바이트라고 하셨는데, 여태까지 2바이트로 알고있어서 헷갈립니다. 복잡한 한글은 3바이트인 것인지, 아니면 원래 한글이 3바이트인지 알려주시면 감사하겠습니다!
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3-K 시간초과 질문입니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 홀로 짠 코드가 시간초과가 나서 강의코드로 돌려보니 이것도 시간초과가 나는데 어디를 줄여야할지 모르겠네요..혹시 함수 호출을 줄여야할까요??http://boj.kr/e278e9a647f64738b65ec88feef436cc
-
미해결Do it! 알고리즘 코딩테스트 with JAVA
백준11659 구간합 런타임 에러
하루코딩님 안녕하세요, 열심히 강의 들으면서 공부중입니다 항상 감사드려요public class tes { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st = new StringTokenizer(br.readLine()); int N = Integer.parseInt(st.nextToken()); int M = Integer.parseInt(st.nextToken()); int[] arr = new int[N + 1]; StringBuilder sb = new StringBuilder(); st = new StringTokenizer(br.readLine()); for(int i = 1; i <= N; i++) { //누적 합 저장 arr[i] = arr[i - 1] + Integer.parseInt(st.nextToken()); } for(int i = 0; i < M; i++) { st = new StringTokenizer(br.readLine()); int start = Integer.parseInt(st.nextToken()); int end = Integer.parseInt(st.nextToken()); sb.append(arr[end] - arr[start - 1]).append("\n"); } System.out.println(sb); } } 위와 같이 구현을 하고 실제로 콘솔에서 제가 아래와 같이 입력하면 tokenizer에서 exception이 발생합니다5 3 5 4 3 2 1 Exception in thread "main" java.util.NoSuchElementException at java.base/java.util.StringTokenizer.nextToken(StringTokenizer.java:347) at tes.main(tes.java:19) 디버깅을 해보면 첫번째 5 3 입력값은 잘 읽어서 tokenizer에 저장이 되었는데요,두번째 인풋인 "5 4 3 2 1"은 입력후 엔터를 치면 st = new StringTokenizer(br.readLine()); 라인을 넘어가면 실제 br(BufferedReader)에는 "[\n, 5, 4, 3, 2, 1, \n, , , , ,.. " 처럼 들어가 있는데 st(stringTokenizer)의 str 값을 보면 "" 이렇게 비어있어요 그래서 nextToken()이 없어 에러가 나는것같은데요 왜 제 itellij에서만 그럴까요 ? ㅠㅠㅠ jdk17 사용하고있습니다
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3-K 시간초과 나는 이유
해당 코드가 시간초과가 나는 이유가 궁금합니다.https://www.acmicpc.net/source/74630828저의 대략적인 시간 복잡도는1500 x 1500 x n4^n <= r*c를 만족하는 자연수중 최대로 생각하여1억이 넘지 않는다 판단하였습니다.
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
안보고 풀려고 하는데 도중에 막혀서 질문드립니다.
http://boj.kr/18625e7680184525bea813e978c8f370어떤 부분에서 로직이 잘못 돌아가고 있는지 파악을 못하고 있습니다 조건문에서 제대로 판별하지 못하고 있는 것 같은데.. 로그를 보면 왜 그런지 모르겠습니다.