묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨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++ 코딩테스트 | 알고리즘 코딩테스트
안녕하세요.
안녕하세요. 오늘부터 큰돌님 강의를 듣게된 수강생입니다.코딩테스트 공부를 이번엔 잘 준비하고싶은데 여기저기 방황하다가, 큰돌님 강의를 수강하게되었습니다. 큰돌님 강의를 온라인이아닌, 오프라인으로 혹시 들을 수 있는 곳이 있을까요 ?온라인으로만 강의를 하시는지 여쭤보려고 글 남깁니다!감사합니다 :)
-
해결됨비전공자의 전공자 따라잡기 - 자료구조(with JavaScript)
연결 리스트 구현 숙제 리뷰 부탁드려봅니다
// 숙제1 next가 아닌 이전것 prev를 구하기 // 숙제2 삽입이 시간복잡도가 O(n)인데 O(1)으로 변경하기 (hint tail) 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 { /* 수정 const [prev] = this.#search(this.length - 1); this.tail.prev = prev; this.tail.next = newNode; newNode.prev = this.tail; this.tail = newNode; */ newNode.prev = this.tail; this.tail.next = newNode; this.tail = newNode; } this.length++; return this.length; } search(index) { return this.#search(index)[1]?.value; } prevSearch(index) { return this.#search(index)[0]?.value; } currentAndPrevNode(index) { return this.#search(index); } #search(index) { let count = 0; let prev; let current = this.head; while (count < index) { prev = current; current = current?.next; count++; } return [prev, current]; } remove(index) { const [prev, current] = this.#search(index); if (prev && current) { if (!current.next) { // 마지막 노드 삭제일경우! prev.next = null; // 마지막 노드 삭제일때 이전 노드의 next를 null로 만들어주면 끝 this.tail = prev; // 마지막 노드를 삭제 했기 때문에 tail을 이전 노드로 바꾸어주어야 한다. } else { // 중간 삭제 일때 prev.next = current.next; current.next.prev = prev; // 현재 노드의 next노드의 이전 노드 prev를 prev 노드로 변경 } this.length--; return this.length; } else if (current) { // index 0일 때 this.head = current.next; this.length--; return this.length; } else { // 삭제하고자 하는 대상이 없을 떄 // 아무것도 안함 } } } const linkList = new LinkedList(); linkList.add(1); // 삭제 linkList.add(2); linkList.add(3); linkList.add(4); linkList.add(5); // 삭제 linkList.add(6); linkList.add(7); linkList.add(8); // 삭제 console.log(linkList.search(6)); // 7 console.log(linkList.prevSearch(2)); // 2 console.log(linkList.tail.prev.value); // 마지막 꼬리의 이전이니까 7 console.log(linkList.remove(0)); // 첫번째 삭제 7 console.log(linkList.prevSearch(2)); // 3 console.log(linkList.tail.prev.value); // 마지막 꼬리의 이전이니까 7 console.log(linkList.remove(6)); // 마지막 삭제 6 console.log(linkList.tail.prev.value); // 삭제후 꼬리 이전이니까 6 console.log(linkList.tail.next); // null console.log(linkList.remove(3)); // 5 const [prev, cur] = linkList.currentAndPrevNode(3); // 첫번째 튜플은 이전노드 두번째 튜플은 현재 노드 console.log(prev.value); // 4 console.log(prev.next.value); // 6 console.log(cur.value); // 6 console.log(cur.prev.value); // 4::) prev와 tail을 추가 하였고 add 메서드와 remove 메서드를 수정 하였습니다.질문1) 연결리스트 구현 숙제에 해당하는 정답 코드인지 리뷰 부탁드려도 될까요?질문2) tail만 사용 했을때는 O(1) 시간복잡도를 가지게 add 메서드를 구현했었는데 prev가 추가되면서 const [prev] = this.#search(this.length - 1); 로직을 추가하여 prev를 구해서 O(1)가 아니게 된것 같은데 무언가 더 좋은 방법이 있을것 같습니다! (저는 고민 해봤는데 모르겠습니다)
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
7-Y 성냥개비 문제 최소값을 Top-Down으로 풀었을 때 질문이 있습니다
안녕하세요, 큰돌님 강의 열심히 듣고 있는 수강생입니다. 제 풀이입니다. 사실상 강의 코드와 거의 일치합니다.(다른 점은 올 수 있는 숫자 중 필요 성냥개비 수가 같은 수 중 큰 수를 제거하고 0,1,2,4,6,7,8 에 대해서만 따로 배열을 만들어 돌렸다는 정도입니다)https://www.acmicpc.net/source/79322370 강의 내용을 바탕으로 바텀업 방식과 탑다운 방식으로 모두 풀어보았는데요. 문제 해설에 남겨주신 풀이도 바텀업인 것을 보니 이 문제의 정통 풀이법은 아마 바텀업인 것 같습니다. 탑다운 방식의 풀이가 틀린 것은 아닌데..테스트 케이스가 여러 개 주어지는 문제이다보니 성냥개비 개수를 작은 순으로 (4개, 7개, 10개..) 주면 맞는데, 처음 주어지는 성냥개비 개수가 큰 경우(예를 들어 100개부터 주어지는 경우) 에는 100개에 대한 top-down을 돌면서 거쳐온 중간 값들을 dp에 저장하는데 이때 '첫째 자리에는 0이 올 수 없다' 라는 조건을 만족하지 못하는 수가 다수 저장됩니다. 입력으로 주어진 수 x에 대해서는if (left == x && num == 0) continue;해당 구문으로 첫째 자리에 0이 오는 것을 방어하는데, 이후 입력으로 받은 수가 dp 테이블에 기록되어있다면 바로 return해버려서 되다 만 중간값을 그냥 반환해버리는 문제가 있는 것 같습니다. 그렇다고 모든 입력에 대해 dp테이블을 전부 비웠다가 다시 탑다운으로 일일이 계산하는 것은 너무나 비효율적같아 보이는데.. 이렇기 때문에 이 문제 풀이는 바텀업이 정배(?)인건가요? 아니면 탑다운 방식에서 제가 뭘 놓치고 있는 것이 있을까요?
-
해결됨김영한의 실전 자바 - 중급 2편
장바구니 minus 질문있습니다!
public void minus(Product product, Integer minusQuantity) { Integer quantity1 = cartMap.get(product); int newQuantity = quantity1 - minusQuantity; if (newQuantity <= 0) { cartMap.remove(product); } else { cartMap.put(product, newQuantity); } } 정말 기본적인 질문인거같은데 이해가 안돼서 질문드립니다 저 else문을 안쓰고 그냥 put하면 수량은 0이 되는데 키가 지워지지 않더라구요 근데 else문을 사용하니까 키가 사라지는데 무슨 차이일까요 ㅠㅠ remove는 이미 if문에서 실행이 돼야되는거 아닌가요
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3 - H 13913 숨바꼭질 4
http://boj.kr/625f57b1c3804f65b7514d601660aac5안녕하세요 선생님 제 코드가 메모리 초과가 나는데 어디가 문제인지 모르겠습니다. Vector v의 크기도 대략 5,000,000보다 작아보이는데 어디가 문제일까요?
-
미해결김영한의 실전 자바 - 중급 2편
타입 이레이져 예시 관련 질문
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예[질문 내용]class EraserBox<T> { public boolean instanceCheck(Object param) { return param instanceof T; // 오류 } public void create() { return new T(); // 오류 } }public class MyArrayListV4<E> { private static final int DEFAULT_CAPACITY = 5; private Object[] elementData; private int size = 0; @SuppressWarnings("unchecked") public E get(int index) { return (E) elementData[index]; // 오류 X }두 예시 모두 런타임 시점에 타입을 활용하는 걸로 보이는데 처음 예시에 있는 두 메서드는 불가능하고 두번째 예시에 있는 get 메서드는 어째서 가능한지 궁금합니다.
-
미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
Combination 공식과 강사님의 설명이 잘 연결이 되지 않습니다.
안녕하세요 강사님. 수업 잘 듣고 있습니다.조합에서 nCr = n!/((n-r)!r!) 인 것으로 알고 있습니다.b=[1,3,3,1] 정의하는 설명에서 3C1이 3을 1로 나눈다라고 하셨는데 이 부분의 설명이 이해가 가지 않아서 질문드립니다. 공식에 대입해서 계산해보면3C1일 때 3!/(3-1)!*1!이 결과적으로 3이 되는것이 맞긴 합니다만, 어떻게 하면 앞의 숫자에서 n-1을 곱 하고 i를 나눌 생각을 할 수 있는지 직관적으로 떠오르지가 않아서 질문 드립니다.
-
미해결김영한의 실전 자바 - 중급 2편
add(int index, Object newValue)에서 루프 조건질문
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]```javapublic void add(Object e, int index) { if (size == elementData.length) { grow(); } for (int i = elementData.length - 1; i > index; i--) { elementData[i] = elementData[i - 1]; } elementData[index] = e; size++; }```for문 조건에서 for (int i = elementData.length - 1; i > index; i--)i의 초기값을 배열의 길이로 주는 것보다는 현재 배열에 담고 있는 요소의 수인 (size-1)변수로 주는 것이 루프문의 범위를 줄이고 정말 미세한차이겠지만 조금 더 효율적이라고 생각하는데 혹시 (size-1)변수로 반복문 초기값을 설정했을 때 문제될 점이 있을까요??
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-I 질문있습니다
안녕하세요 선생님 🙂 이해가 가지 않는 부분이 있어서 질문드립니다. 강의에서도 설명 부분이 없는 것 같아서 질문드립니다. for (int i = 0; i < N; i++) { cin >> str; for (int j = 0; j < str.size(); j++) { if (str[j] < 97) result += str[j]; else if (result.size()) func(); } if (result.size()) func(); } 위의 코드 중 if (result.size()) func(); 이 부분이 왜 다시 들어가야하는지 이해가 가지 않습니다. 설명 부탁드립니다..!!
-
미해결김영한의 실전 자바 - 중급 2편
Deque에서 Queue인지 Stack인지는 데이터를 추가 할 때 결정되는건가요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]예제를 따라하면서 호기심에deque.push(1); deque.push(2); deque.push(3); System.out.println("deque.pop() = " + deque.poll()); System.out.println("deque.pop() = " + deque.poll()); System.out.println("deque.pop() = " + deque.poll());pop을 -> poll로 바꿔봤는데 결과값이 똑같이 나오고그 반대로 offer / pop 으로 해도 마찬가지더라구요!Deque<Integer> deque = new ArrayDeque<>();혹시 이 Deque가 queue / stack 둘 다 지원하기 때문에데이터를 추가 할 때 자료구조가 결정되는게 맞는건가요?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
조합을 이용한 풀이
안녕하세요 선생님 조합을 이용해서 문제 풀이를 시도했는데, 순열 [1,3,9]를 이용 http://boj.kr/2411bc89bcd94ac3baab79fed027f981 순열[-9,-3,-1]을 이용http://boj.kr/8a0f5a03890c4b1cb210f3ef378f238e 각각 시도를 했는데 1번의 경우는 실패하고 2번의 경우는 성공을 하는데 이유를 모르겠습니다.
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
1-C 질문
안녕하세요 선생님주차 시간의 범위가 1~100인데배열의 크기를 104로 잡는 이유가 궁금합니다.강의 잘 듣고 있습니다.감사합니다.
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
bits/stdc++.h 파일을 추가하고 실행을 하려고 하는데 cin, cout 등 기본 함수에 에러가 발생합니다,
stdc++.h를 추가하기 위해서 gcc --version를 통해 경로를 확인하고 해당 경로로 가서 include폴더 안에 bits폴더를 생성해서 stdc++.h파일을 추가하고a.cpp파일을 만들어서 실행을 했는데 가장 기본 함수인 cin, cout그리고 string자체가 에러가 납니다,,,환경은 맥 m2 프로이고 vscode로 실행했습니다추가) #include <iostream>으로 변경했더니 됩니다ㅠㅠ 뭐가 문제일까요?추가22) 해결했습니다!! iostream은 되길래 iostream파일 경로로 가서 확인했더니 /Applications/Xcode.app/contents/Developer/~이 경로가 아니고 다른 경로였고 해당 경로에 있던 bits폴더의 stdc++.h에 넣어놨던 내용들이 다 초기화되서 아무것도 없더라구요,,, 그래서 다시 넣어줬더니 잘 실행이됩니다!!찾아보니까 xcode를 업데이트 하면서 내용들이 날아간것 같더라구욥! 혹시 다른 분들께 도움이 될 수도 있어 해결방법까지 남겨놓겠습니다!
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3-d 불 메모리 초과 때문에 질문드립니다!
안녕하세요 큰돌님, 언제나 좋은 강의 감사드립니다.http://boj.kr/3ec7adf276a74ad89e779cb5b1839dbd3-d 불 문제를 풀고있는데 계속해서 메모리 초과가 발생해서요.혹시 몰라 큰돌님 예제 소스 확인했는데 로직상 거의 유사한것같은데 계속해서 메모리 초과가 발생하고 있습니다.검토 한 번 부탁드려도 될까요?다시 한번 좋은 강의 감사드립니다