묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
정렬
안녕하세요 코드보고 공부하다가 궁금한 점이 생겨서 질문 남깁니다.문제에서 가수가 라이브한 곡 순서대로 부른곡의 길이가 분 단위로 나타난다고 하였습니다.예시에서는 오름차순으로 잘 정렬되어있지만 가수가 라이브한 곡들의 길이가 뒤죽박죽되어있을때도 있을것을 고려해 배열을 정렬해준뒤 강사님의 풀이랑 똑같은 풀이를 적용하였는데 오답이라고 떴습니다.정렬메소드가 들어가면 왜 오답이 뜨는지 궁금합니다 !
-
해결됨코딩테스트 [ ALL IN ONE ]
카카오톡 오픈채팅
비밀번호가 뭔가요?ㅠ
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3 -N 출력초과
http://boj.kr/d796e238f3674969abcf7375867e2971안녕하세요 선생님. 코드가 논리적으로는 맞아보이는데 계속 출력초과가 나와서 어떠한 부분이 문제인지 찾아주시면 감사하겠습니다!
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-O 질문입니다 :)
안녕하세요 선생님 🙂 2-N의 풀이 법을 응용하여 풀이를 해보았는데요, 이해가 가지 않는 부분이 2가지가 있어서 질문 드립니다.http://boj.kr/73ed62b755394723a85ed0a257384a56이렇게 풀이하였을 경우에 다른 입력 값들은 전부 올바른 출력 값을 호출하지만, 6번째 입력 값의 출력 값만 오답이 되었습니다. stack의 top을 t라는 변수에 저장하여 문제를 풀이하였는데요, 이게 왜 오답을 호출하는지 하나씩 따져봐도 이해가 가질 않습니다.http://boj.kr/db3bdeaa5da0418dad6ededf3422b759t라는 변수를 삭제한 후에 stk.top()를 넣어 테스트케이스의 올바른 출력 값을 호출하였습니다. 하지만 무엇을 놓쳤는지 오답이 되더라구요;; ㅠㅠ 제가 무엇을 잘못했거나 놓쳐서 그럴텐데 이유가 무엇인지 알려주시면 감사하겠습니다 :)
-
해결됨2주만에 통과하는 알고리즘 코딩테스트 (2024년)
완전탐색(For 반복문) 6분 질문드립니다.
100만 이하의 약수가 존재하는지 확인할 때 반복문을 왜 101만까지 돌리는 건 가요? 저는 입력 받은 수까지 확인을 했었거든요... 이유가 궁금합니다!백만보다 큰지 안 큰지 확인하기 위함인 건 알겠는데 수학적으로 이해가 좀 안 가서 질문을 드립니다.추가적으로 알고리즘을 풀다보면 수학적인 지식이 좀 많이 부족하다고 느끼는데 어떻게 채우는 게 좋을지도 궁금합니다.. 6개월 정도 회사 다니면서 코테에만 집중해서 이직하는 게 현재 목표입니다. 제가 작성한 답안입니다.답 도출까지는 못했습니다.
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
각 주차별 문제를 제대로 풀지못하면 다음 주차는 힘들까요?
안녕하세요 선생님3주차 강의를 들으면서 학습중 인데요!2주차 까지는 문제 풀이방법을 외우는 방식으로 학습중인데요..3주차 학습중인 현재.. 어느정도는 외워지지만 일부는 이해가 되지 않아 외워지지 않습니다..그렇다면 이해가 될때까지 다음주차 학습을 미뤄야 하는게 맞을지 고민입니다.. 어떻게 학습하는게 좋을까요?경력 이직 준비중이고.. 시간이 많이 없는 상황이라 마음만 급하네요..ㅠ.ㅠ
-
미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
3. 문장속단어 BufferedReader
import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String[] arr = br.readLine().split(" "); String tmp=""; for(String s:arr) { if(s.length()>tmp.length()) tmp = s; } System.out.println(tmp); }}BufferedReader 사용하면 결과가 pending이라고 뜨는데, 풀이가 잘못된 걸까요? 아님 BufferedReader사용때문에 그런걸까요?
-
미해결비전공자의 전공자 따라잡기 - 자료구조(with JavaScript)
숙제 length return 하기
class Node { constructor(value) { this.value = value; this.left = null; this.right = null; } } class BinarySearchTree { constructor() { this.root = null; // 숙제 몇개 인지 확인하는 count this.length = 0; } #insert(node, value) { if (node.value > value) { // 루트노드보다 작은 값이면 if (node.left) { this.#insert(node.left, value); } else { node.left = new Node(value); } } else { // 숙제 : 같은 값을 넣은경우 에러 처리 (alert, throw) if (node.value === value) throw new Error(`이미 해당 ${value}가 존재 합니다`); // 루트노드보다 큰 값이면 if (node.right) { this.#insert(node.right, value); } else { node.right = new Node(value); } } } insert(value) { if (!this.root) { this.root = new Node(value); } else { this.#insert(this.root, value); } this.length++; } #search(node, value) { if (!node) return null; if (node.value > value) { return this.#search(node.left, value); } else if (node.value === value) { return node; } else { return this.#search(node.right, value); } // if (node.value > value) { // // 더 작은값 찾을때 // if (!node.left) { // return null; // } // if (node.left.value === value) { // return node.left; // } // return this.#search(node.left, value); // } else { // if (!node.right) { // return null; // } // if (node.right.value === value) { // return node.right; // } // return this.#search(node.right, value); // } } search(value) { if (!this.root) return null; if (this.root.value === value) { return this.root; } return this.#search(this.root, value); } #remove(node, value) { if (!node) { // 제거 할 값이 bst에 존재하지 않는 경우 return null; // 지울 값이 존재 안하면 null return } if (node.value === value) { // 자식 입장 // 지울 값을 찾은 경우 if (!node.left && !node.right) { this.length--; // leaf return null; } else if (!node.left) { // 왼팔만 없는 경우 return node.right; // 왼팔이 없는 경우 자기 왼팔 대신 오른팔을 쓰라고 return 해줌 } else if (!node.right) { // 오른팔만 없는 경우 return node.left; // 오른팔 없는 경우 자기 오른팔 대신 왼팔을 쓰라고 return 해줌 } else { // 양팔 다 있는 경우 let exchange = node.left; while (exchange.right) { exchange = exchange.right; } const temp = node.value; node.value = exchange.value; exchange.value = temp; node.left = this.#remove(node.left, exchange.value); return node; } } else { // 부모 입장 if (node.value > value) { node.left = this.#remove(node.left, value); return node; } else { node.right = this.#remove(node.right, value); return node; } } } remove(value) { // 1. leaf(양팔 다 없음) -> 제거 // 2. leaf x, 왼팔이 없다 -> 오른팔 끌어올린다 // 3. leaf x, 오른팔이 없다 -> 왼팔 끌어올린다 // 4. leaf x, 양팔 다 있다 -> 왼팔에서 가장 큰 애와 바꾼다, leaf를 지운다 this.root = this.#remove(this.root, value); // return 숙제 length return 하기 return this.length; } } const bst = new BinarySearchTree(); bst.insert(8); bst.insert(10); bst.insert(3); bst.insert(1); bst.insert(14); bst.insert(6); bst.insert(7); bst.insert(4); bst.insert(13); console.log(bst.length); // 9 console.log(bst.remove(8)); // 8 bst.search(7); bst.search(5); console.log(bst.remove(4)); // 7 console.log(bst.remove(15)); // 없는 값을 지운다면 현재 length return 7 숙제 정답일까요?제발 ㅠㅠ 🙏
-
해결됨김영한의 실전 자바 - 중급 2편
ArrayDeque와 LinkedList 선택 기준
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]지난 강의에서 ArrayList와 LinkedList 구현체 선택 기준이데이터를 조회할 일이 많거나 뒷 부분에 데이터를 추가,삭제가 많은 경우→ 배열 리스트앞쪽의 데이터 추가, 삭제가 많은 경우→ 연결 리스트로 알려주셨습니다. 이번 ArrayDeque와 LinkedList의 구현체 선택 기준에 대한 언급은 없는데, 실무에서 거의 ArrayDeque로만 사용해서 그런건가요? 아니면 실무에서 ArrayDeque 대신 LinkedList로 사용할 때도 ArrayList와 LinkedList의 선택 기준이랑 동일하게 앞쪽에 데이터 추가, 삭제가 많을 때 사용하나요? 강의에서는 덱의 구현체는노드 링크를 사용하는 LinkedList보다는 단순한 배열 구조로 성능이 빠른 ArrayDeque를 사용하자로 마무리하셔서 질문 남깁니다.
-
미해결비전공자의 전공자 따라잡기 - 자료구조(with JavaScript)
숙제 : 같은 값을 넣은경우 에러 처리
class Node { constructor(value) { this.value = value; this.left = null; this.right = null; } } class BinarySearchTree { constructor() { this.root = null; } #insert(node, value) { if (node.value > value) { // 루트노드보다 작은 값이면 if (node.left) { this.#insert(node.left, value); } else { node.left = new Node(value); } } else { // 숙제 : 같은 값을 넣은경우 에러 처리 (alert, throw) if (node.value === value) throw new Error(`이미 해당 ${value}가 존재 합니다`); // 루트노드보다 큰 값이면 if (node.right) { this.#insert(node.right, value); } else { node.right = new Node(value); } } } insert(value) { if (!this.root) { this.root = new Node(value); } else { this.#insert(this.root, value); // 숙제 : 같은 값을 넣은경우 에러 처리 (alert, throw) } } search(value) {} remove(value) {} } const bst = new BinarySearchTree(); bst.insert(8); //bst.insert(8); // Error: 이미 해당 8가 존재 합니다 bst.insert(10); //bst.insert(10); // Error: 이미 해당 10가 존재 합니다 bst.insert(3); //bst.insert(3); // Error: 이미 해당 3가 존재 합니다 bst.insert(1); //bst.insert(1); // Error: 이미 해당 1가 존재 합니다 bst.insert(14); //bst.insert(14); // Error: 이미 해당 14가 존재 합니다 bst.insert(6); //bst.insert(6); // Error: 이미 해당 6가 존재 합니다 bst.insert(7); //bst.insert(7); // Error: 이미 해당 7가 존재 합니다 bst.insert(4); //bst.insert(4); // Error: 이미 해당 4가 존재 합니다 bst.insert(13); //bst.insert(13); // Error: 이미 해당 13가 존재 합니다숙제 코드 정답일까요?
-
해결됨비전공자의 전공자 따라잡기 - 자료구조(with JavaScript)
영상 중간에 0:10 1:23초 수정에 따른 코드 최종본
class Node { constructor(value) { this.value = value; this.left = null; this.right = null; } } class BinarySearchTree { constructor() { this.root = null; } #insert(node, value) { if (node.value > value) { // 루트노드보다 작은 값이면 if (node.left) { this.#insert(node.left, value); } else { node.left = new Node(value); } } else { // 루트노드보다 큰 값이면 if (node.right) { this.#insert(node.right, value); } else { node.right = new Node(value); } } } insert(value) { if (!this.root) { this.root = new Node(value); } else { this.#insert(this.root, value); // 숙제 : 같은 값을 넣은경우 에러 처리 (alert, throw) } } search(value) {} remove(value) {} } const bst = new BinarySearchTree(); bst.insert(8); bst.insert(10); bst.insert(3); bst.insert(1); bst.insert(14); bst.insert(6); bst.insert(7); bst.insert(4); bst.insert(13); 영상 따라 했는데 안되면 해당 코드 참고 해보세용!
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3-H 메모리 초과
안녕하세요, 큰돌님. 큰돌님의 코드랑 비교하면서 로직은 동일한 것으로 생각이 되는데, 제 코드는 메모리 초과가 나고, 큰돌님처럼 next를 { here - 1, here + 1, here * 2 }에서 가져오면 초과가 나지 않더라구요. sizeof 연산자로 확인한 결과 큰돌님 방식과 제 dx 배열의 크기는 각각 16바이트, 12바이트로 외려 제건 좀 덜 잡아먹더라구요. 차이점이라면 스택 세그먼트인가, 데이터 세그먼트인가 밖에 없는 것 같은데 백준 제출 시 데이터 세그먼트와 관련하여 제한사항이 있을까요? 코드 첨부드립니다.http://boj.kr/d99dbf812488492db85d619c32328ef5
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3-M 코드 질문입니다.
안녕하세요 큰돌님! 큰돌님께서 풀이해주신 방법과 제가 풀이한 방법이 좀 달라서 이 방법도 혹시 괜찮은지 궁금해서 여쭤봅니다.http://boj.kr/c5b8619d1ed146ddb24e67d078bb1cb8 visitied 대신, 순열로 생각해서 풀이했습니다.부등호 비교하는 로직은 atoi를 하지 않아도 아스키코드상으로 값이 클 것을 예상하여 직접 비교하였습니다.최대값, 최소값의 경우에는 가능한 경우의 수를 모두 벡터에 string으로 넣어 sort로 정렬한 후, 앞뒤만 가져오는 방법을 사용했습니다. 혹시 이 방법이 아니라 원복을 사용하신 이유가 순열을 만들때 추가로 사용되는 시간 때문인가요?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-L 궁금한점이 있습니다!
안녕하세요 큰 돌님 항상 영상 잘 보고 있습니다! 다름이 아니라 큰 돌님 코드를 보면 o == 1 ? A++ : B++;를 뒤에 써주시더라구요 o==1?A++ : B++을 if문보다 위에 써주니까 답이 계속 틀리게 나오더라구요(물론 변수를 많이 쓰고 여러 조정을 해주면 풀리기는 하겠지만)왜 항상 시간 계산을 점수 업데이트 보다 먼저 해야하는 문제 풀이가 더 쉬운지 잘 이해가 가지 않습니다,,,
-
해결됨김영한의 실전 자바 - 중급 2편
직접 구현한 MyHashSet
에서 데이터를 hascode로 변환하고 그 hashcode로 hashindex에 넣는거를 구현했잖아요자바 컬랙션에서 지원하는 hastSet,LinkedHashSet,TreeSet은 자바에서 hashCode는 지원하는건 알겠는데 저희가 배열에 값을 넣을때 따로 hashcode % 배열의크기 이 코드를 안넣어도되는건가요? 자바에서 hashCode도 생성해주고 hashIndex까지 생성해줘서 배열에 넣어주나요?
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-L질문입니다
안녕하세요 선생님 🙂 선생님 풀이를 보고 다시 한번 풀어봤는데요, 아래 코드에서 선생님 코드와의 차이점은 for문 안의 삼항 연산자가 if문의 위에 올라갔다는 점 딱 하나 밖에 없습니다. xstring헤더의 out of range 에러가 떴는데요, 이유가 뭔지 궁금합니다. 항상 도움주셔서 감사합니다 :) http://boj.kr/291382d17703486e8a8f4e790b190e1d
-
해결됨코딩테스트 [ ALL IN ONE ]
15:52 시간복잡도
강의 문제를 in list로 푸는 경우의 시간복잡도를 O(n^3)라고 하셨습니다. 잘 이해가 가지 않아 질문드립니다. for loop로 n개의 nums 모든 요소 순회 => O(n)list에 대한 in 연산 수행 => O(n)최소 한 번은 수행2번 이상의 경우 while문에서 시간복잡도 계산in 연산 수행의 반복을 while문으로 수행worst case => O(n)[1, 2, 3, 4]의 경우 n-1, n-2, n-3, n-4번 수행이걸 O(n)으로 취급하는건가요? 1.nums의 모든 요소에 대해 항상 while문이 O(n)으로 동작하지 않고 최악의 경우에도 n-1, n-2, n-3, ... 1로 줄어들지 않나요...? 아니면, 2.for loop로 n번 순회하면서while loop는 n-1, n-2, n-3번 수행하게되니두 반복문에 의한 시간복잡도는 등차수열 합의 공식에 근거해 최종적으로 O(n^2)가 되고 이 때 매번 반복하는 in연산도 O(n)이니 최종 시간복잡도는 O(n^3)다. 로 이해하는건가요? 19:47 설명 중어떻게 while이 모든 경우에 n번 수행될 수 있는건지 궁금합니다...
-
미해결김영한의 실전 자바 - 중급 2편
제네릭 타입이나 메서드를 정의할 때에 <T extends Animal>
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]제네릭 타입이나 메서드를 정의할 때에 상한 제한을 두기 위해서 <T extends Animal> 로 지정하였는데,이렇게 지정하면 <Animal> 로 지정하는 것과 같은 효과가 나는 것이 아닌가요?만약에 맞다면, 굳이 왜 T extends Animal 이라는 방법을 사용하는지 궁금합니다.
-
미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
큐로 구현
큐로 구현해서 사이트상 통과는 됐는데 혹시 코드 리뷰 부탁드려도될까요..?
-
미해결Do it! 알고리즘 코딩테스트 with C++
백준 1377 질문있습니다
기본 sort함수를 사용하면 정렬에 사용하는 알고리즘이 버블정렬과 다르게 될 텐데, 배열 내에 같은 수가 있다면 second에 저장된 인덱스값이 예상과 다르게 될 것 같습니다. 그럼에도 정답이 인정되는게 잘 이해되지 않습니다.