묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결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에 저장된 인덱스값이 예상과 다르게 될 것 같습니다. 그럼에도 정답이 인정되는게 잘 이해되지 않습니다.
-
미해결비전공자의 전공자 따라잡기 - 자료구조(with JavaScript)
숙제2 연결리스트를 이용하여 큐 구현하기
학습 목표- 배열 치트키 자료구조가 아닌 연결 리스트를 이용하여 queue 자료구조를 구현하자.- 삽입과 삭제를 시간복잡도 O(1)가 되게 해야됨.- queue은 FIFO이기 때문에 삭제시 첫번째를 삭제해야됨.class Node { constructor(value) { this.value = value; this.next = null; this.prev = null; } } class LinkedList { constructor(length = 0) { this.length = length; this.head = null; this.tail = null; } add(value) { const newNode = new Node(value); if (this.head === null) { this.head = newNode; this.tail = newNode; } else { newNode.prev = this.tail; this.tail.next = newNode; this.tail = newNode; } this.length++; return this.length; } // 스택 구현시 삭제 메서드 removeLast() { const value = this.tail.value; this.tail.prev.next = null; // 제일 마지막 이전의 next의 좌표를 null로 변경해줌 this.tail = this.tail.prev; // 마지막을 tail의 이전 노드로 변경 해줌 return value; } // 큐 구현시 삭제 메서드 removeFirst() { const value = this.head.value; this.head.next.prev = null; // 제일 첫번째 다음의 이전 좌표를 null로 변경해줌 this.head = this.head.next; // 첫번째를 head next 노드로 변경 해줌 return value; } } // 숙제2 연결리스트로 큐 만들기 class Queue { linkedList = new LinkedList(); add(value) { return this.linkedList.add(value); } shift() { return this.linkedList.removeFirst(); } get top() { return this.linkedList.head.value; } get length() { return this.linkedList.length; } } const queue = new Queue(); console.log(queue.add(1)); // 1 console.log(queue.add(3)); // 2 console.log(queue.add(5)); // 3 console.log(queue.top); // 1 console.log(queue.length); // 3 console.log(queue.shift()); // 1 결과head의 value값이 3, prev가 null이 되고 next가 value가 5인 노드를 가르킴
-
미해결비전공자의 전공자 따라잡기 - 자료구조(with JavaScript)
숙제1 LinkedList로 스택 구현하기
학습 목표- 배열 치트키 자료구조가 아닌 연결 리스를 이용하여 stack 자료구조를 구현하자.- 삽입과 삭제를 시간복잡도 O(1)가 되게 해야됨.- stack은 FILO이기 때문에 삭제시 마지막을 삭제해야됨. class Node { constructor(value) { this.value = value; this.next = null; this.prev = null; } } class LinkedList { constructor(length = 0) { this.length = length; this.head = null; this.tail = null; } add(value) { const newNode = new Node(value); if (this.head === null) { this.head = newNode; this.tail = newNode; } else { newNode.prev = this.tail; this.tail.next = newNode; this.tail = newNode; } this.length++; return this.length; } removeLast() { const value = this.tail.value; this.tail.prev.next = null; // 제일 마지막 이전의 next의 좌표를 null로 변경해줌 this.tail = this.tail.prev; // 마지막을 tail의 이전 노드로 변경 해줌 return value; } } // 숙제 1 연결리스트로 스택 만들기 class Stack { linkedList = new LinkedList(); add(value) { return this.linkedList.add(value); } pop() { return this.linkedList.removeLast(); } get top() { return this.linkedList.head.value; } get length() { return this.linkedList.length; } } const stack = new Stack(); console.log(stack.add(1)); // 1 console.log(stack.add(3)); // 2 console.log(stack.add(5)); // 3 console.log(stack.top); // 1 console.log(stack.length); // 3 console.log(stack.pop()); // 5결과디버거 결과를 확인 해보면 최종적으로tail의 value는 3이고 next는 null prev는 value1의 노드를 가르키고 있는걸 알 수 있다.
-
미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
이중 for로만 간단하게 풀어봤습니다. 괜찮을까요?
const solve = (arr) => { let count = 0; let u = 0; let r = 0; let d = 0; let l = 0; for (let i = 0; i < arr.length; i++) { for (let j = 0; j < arr.length; j++) { let my = arr[i][j] u = i !== 0 ? arr[i - 1][j] : 0 r = j !== arr.length - 1 ? arr[i][j + 1] : 0 d = i !== arr.length - 1 ? arr[i + 1][j] : 0 l = j !== 0 ? arr[i][j - 1] : 0 if (my > u && my > r && my > d && my > l) { count += 1 } } } return count }
-
미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
LinkedList를 사용해서 풀어도 되나요?
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.package sorting; import java.util.LinkedList; import java.util.Scanner; public class LRUMain { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int s = scanner.nextInt(); int n = scanner.nextInt(); LinkedList<Integer> cache = new LinkedList<>(); int[] tasks = new int[n]; for (int i = 0; i < n; i++) { tasks[i] = scanner.nextInt(); } for (int task : tasks) { if (cache.contains(task)) { cache.remove(cache.indexOf(task)); } cache.addFirst(task); if (cache.size() > s) { while (cache.size() > s) { cache.removeLast(); } } } for (int element : cache) { System.out.print(element+" "); } } }위 방식으로 접근해도 되나요?
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-I 재질문입니다..!!
안녕하세요 선생님 🙂 급한 마음에 질문하는 양식에 맞춰 질문하지 않았던 것 같습니다 죄송합니다 ㅠㅠ http://boj.kr/436a553bbbb24930908a3c7450ef7599 else if (result.size()) func();위의 코드는 str[i]가 숫자가 아니면서 result의 size가 1 이상일 경우라고 이해했습니다. 약간의 변형을 위하여 else if가 아닌 if문으로 변경하여 아래와 같이 변경했더니 결과 값이 이상해졌습니다.if (str[i] >= 97 && result.size()) func(); 이외에도 다방면으로 접근해봤지만 전부 결과 값이 이상하게 나왔습니다. 도대체 저 코드가 의미하는 것이 뭘까요..?? ㅠㅠ
-
미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
강사님 이렇게 풀어봤습니다.!
const solve = (arr) => { const result = [] for (let i = 0; i < arr.length; i++) { let count = 1 for(let j = 0; j < arr.length; j++) { if (arr[j] > arr[i]) { count += 1; } } result.push(count); } return result }조금 간단...해..보이게..?처음에 count 를 1로 줘서 1등으로 시작하고 풀이해주신 부분과 비슷하지만 살짝은,, 다르게 풀어봤습니다.
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
4-H 코드 한 번 봐주실 수 있으신가요?ㅎㅎ
안녕하세요 큰돌선생님! 늘 제가 먼저 해보고 선생님 코드를 보는데, 제 코드랑 달리 선생님 코드는 너무 깔끔해서 항상 감동합니다.. 늘 감사합니다다름이 아니라,http://boj.kr/3f2dfd5dd72a45e69326ea4b3d0e2216저는 이 문제에서 마지막 벽 하나 없애는 부분을 비트마스킹으로 경우의 수를 만들어서 싹 돌려줬는데요.. 5중 for문..ㅋㅋ으로 시간초과 뜰줄 알았으나 다행히(?) 맞았습니다가 뜨긴했는데 불안해서요.. 이런식으로 짜는 건 많이 비추하시나요?ㅠㅠ 실제 코테였다면 이렇게 하는게 위험한 방법인지 궁금해서 한 번 질문드려요!! 좋은 하루 보내세요!!
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-I 재질문있습니다
안녕하세요 선생님 🙂 다른 문제들을 풀다가 질문드렸던걸 까먹었었네요 ㅠㅠ 드렸던 질문은 해결되었지만 문제를 다시 들여다보니 이해가 가지 않는 부분이 하나 더 있어서 다시 질문드립니다. else if (result.size()) func();위의 코드는 str[i]가 숫자가 아니면서 result의 size가 1 이상일 경우라고 이해했습니다. 약간의 변형을 위하여 else if가 아닌 if문으로 변경하여 아래와 같이 변경했더니 결과 값이 이상해졌습니다.if (str[i] >= 97 && result.size()) func(); 이외에도 다방면으로 접근해봤지만 전부 결과 값이 이상하게 나왔습니다. 도대체 저 코드가 의미하는 것이 뭘까요..?? ㅠㅠ
-
해결됨김영한의 실전 자바 - 중급 2편
타입 매개변수 제한 강의 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.//문제 2: 개 타입 반환 //dogHospital.setAnimal(dog); Dog bigger = dogHospital.bigger(new Dog("멍멍이2", 400)); System.out.println(bigger);문제점 2번에서dogHospital.setAnimal(dog); 선언을 새로 한 이유가 있나요 ? 주석처리하고 컴파일해도 정상적으로 작동해서 여쭤봅니다.
-
해결됨김영한의 실전 자바 - 중급 2편
다른 타입의 데이터 나머지 연산 질문
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]해시 인덱스를 ([데이터 값] % [배열 크기])로 지정하는 원리라는 것을 알게 되었습니다.데이터 값이 Integer라서 나머지 연산이 가능했는데,데이터가 다른 타입이면 나머지 연산을 어떻게 하나요?
-
해결됨김영한의 실전 자바 - 중급 2편
클래스 작성 시 줄바꿈 질문
강의에서 클래스를 작성하실 때,public class Marine extends BioUnit { // 줄바꿈 public Marine(String name, int hp) { super(name, hp); } }다음과 같이 한 줄 띄고 작성을 하시는데 그 이유가 있나요? 어떤 특별한 컨벤션 같은게 존재하는건지 아니면 편의상 이렇게 작성하시는건지 해당 줄바꿈의 의도가 궁금합니다.