묻고 답해요
160만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
- 
      
        
    미해결비전공자의 전공자 따라잡기 - 자료구조(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); } }다음과 같이 한 줄 띄고 작성을 하시는데 그 이유가 있나요? 어떤 특별한 컨벤션 같은게 존재하는건지 아니면 편의상 이렇게 작성하시는건지 해당 줄바꿈의 의도가 궁금합니다.
 - 
      
        
    미해결비전공자를 위한 자바
super 키워드
강사님 궁금한게 있습니다main( ) 메서드 에서 클래스를 만들고 부모 클래스에 있는 인스턴스를 . 을 이용해서 가져올때 부모와 자식 클래스에 이름이 같은 변수 를 가져올 때 main() 메서드 에서는 super 키워드 를 사용할수 있나요 ?
 - 
      
        
    해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
120p unordered_map
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요교재 120p에 unordered_map은 정렬이 되지 않는다 라고 했는데 출력 값을 보면 우연인지(?) 입력의 역순으로 출력이 됬습니다ex) 입력 bcd - aaa - aba , 출력 aba-aaa-bcd왜 이런 순서로 출력이 됬는지 궁금합니다.출력도 입력과 마찬가지로 bcd - aaa - aba 로 나와야하는거 아닌가요? 감사합니다
 - 
      
        
    해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
교재 116p map질문입니다
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요.교재 115에 map은 "자동으로 오름차순으로 정렬되기 때문에 넣은 순서대로 map을 탐색할 수 있는 것이 아닌 아스키코드순으로 정렬된 값들을 기반으로 탐색한다"라고 되어있습니다.그러나 116p에 출력된 값에는kundol - 박종선 - 이승철 - 주홍철 순으로 출력이 됩니다. 그리고 (it).second를 출력했을 때 100 - 3 - 2 - 1 순인데 왜 이 순서인지 모르겠습니다.감사합니다
 - 
      
        
    해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
교재 76p 1.7 함수 파트 질문있습니다
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요.교재 76p 에서 2차원 배열 fill함수 코드dptj &b[9][10]가 이해가 잘 안됩니다.. (first,last]라서 1차원 배열에서 &a[10]처럼 한 것은 이해가 됬는데 2차원배열에서의 활용을 잘 모르겠습니다 +) 추가로왜 &b[10][10]가 아닌지,77p에서 배열 이름으로 초기화할 땐 왜 &b[0][0] + 10*10처럼 하는지 모르겠습니다. 추가 설명해주시면 감사하겠습니다.fill(&b[0][0],&b[9][10],2);
 - 
      
        
    미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
1-O 부연설명 강의에서 모듈러 연산이 이해가 잘 안됩니다
안녕하세요 큰돌님 강의 잘 듣고 있습니다!다름이 아니라 1-O 부연설명 강의에서 cnt = (cnt * 1) + 1과 cnt = (cnt % n * 10 % n) + 1이라고 말씀해주셨는데요!(1:02)그 다음에 설명해주실 때 (a * b + c) % n과 (a % n * b + c) % n과 동일하다고 설명해주시더라구요ㅠㅠ그래서 살짝 헷갈리는데결국에는 (a * b + c) % n = (a % n * b + c) % n = (a % n * b + c % n) % n이거인건가요?
 - 
      
        
    미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
Section 7-2) 휴가
안녕하세요, 강사님. 제 코드가 지저분하긴 하지만 (L, days라는 변수 두개 씀) 이 로직도 맞는 걸까요? 테스트 돌려보면 예시들은 success로 나오긴 합니다. 근데 확신이 안 서서요.. 참고로 저는 t, p 리스트를 인덱스 0부터 시작했습니다. import sys sys.stdin=open("input.txt", "r") def DFS(L, days, income): global answer if L>n: return if days>n: return if days==n: if answer<income: answer=income else: DFS(L+1, days+t[days], income+p[days]) DFS(L+1, days+1, income) n=int(input()) t=list() p=list() for _ in range(n): tt,pp=map(int,input().split()) t.append(tt) p.append(pp) answer=-214700000 DFS(0,0,0) print(answer)
 - 
      
        
    미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
Section 7-1) 최대점수 구하기(DFS)
안녕하세요 강사님, 질 좋은 강의 제공해주셔서 감사합니다. 아래 첨부한 제 코드로 진행하면 DFS(L+1, sum+s[L], time+t[L]) 에서 list list index out of range 에러가 뜹니다. 강사님은 아래와 같이 푸셨던데, 제 코드에서 어떠한 점이 에러를 반환했을까요?if L==n: if sum>answer: answer=sum import sys sys.stdin=open("input.txt","r") def DFS(L, sum, time): global answer if time>m: return if L==n and sum>answer: answer=sum else: DFS(L+1, sum+s[L], time+t[L]) DFS(L+1, sum, time) n,m=map(int, input().split()) s=list() t=list() for i in range(n): ss,tt=map(int,input().split()) s.append(ss) t.append(tt) answer=0 DFS(0,0,0) print(answer)
 - 
      
        
    미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-M while문으로 풀어보았습니다
http://boj.kr/d6ab60409324405daf25b4576458619a답안의 for(;; i++) 구문이 눈에 잘 들어오지않아서..무한루프라면 while문 으로도 할수 있을지 않을까 해서 구현해 보았습니다..
 - 
      
        
    미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
안녕하세요.
안녕하세요. 오늘부터 큰돌님 강의를 듣게된 수강생입니다.코딩테스트 공부를 이번엔 잘 준비하고싶은데 여기저기 방황하다가, 큰돌님 강의를 수강하게되었습니다. 큰돌님 강의를 온라인이아닌, 오프라인으로 혹시 들을 수 있는 곳이 있을까요 ?온라인으로만 강의를 하시는지 여쭤보려고 글 남깁니다!감사합니다 :)