묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결Do it! 알고리즘 코딩테스트 with JAVA
[P11726 2*N 타일채우기] top down 방식을 사용하니 런타임 에러가 발생합니다.
top down 방식을 사용하니 런타임 에러가 발생합니다. 이 문제는 bottom up으로만 풀어야하나요? 런타임 에러가 난 이유는 무엇일까요? import java.util.Scanner; public class Main { static long[] D; public static void main(String[] args){ Scanner scanner = new Scanner(System.in); int n = scanner.nextInt(); D = new long[n+1]; for(int i = 0 ; i < n+1 ; i++){ D[i] =-1; } D[1] =1; D[2] =2; long result = DP(n); System.out.println(result); } public static long DP(int n){ if(D[n] != -1){ return D[n]; } return D[n] = (DP(n-1) + DP(n-2)) % 10007; } }
-
해결됨김영한의 실전 자바 - 중급 2편
직접 구현하는 set1 - MyHashSet 코드 구현 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요. MyHashSetV1 복습 할 겸 코드를 안보고, 만들고 있었습니다.그런데 계속 하다 보니, 코드를이런 코드 방식으로 하게 되는 데요.영한님 코드를 보니buckets[hashIndex] 에서 새로운 인스턴스 bucket을 만들어서 하시는 것을 보게 되는 데요. 이럴 때 에는 영한님의 코드를 보면서 고치고, 습관이 바껴질 때까지 코드를 치는게? 낳은가요? 아니면 저가 하는 코드 방식?if(buckets[hashIndex].contains(value)),buckets[hashIndex].add(value);이렇게 하는 것도 괜찮은가요?답변 부탁 드립니다.
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-R (1068번 : 트리) 문제 맞왜틀 질문있습니다.
안녕하십니까 선생님,1068번 문제 맞왜틀 질문 있습니다.http://boj.kr/b28a356d783849619b6e5d4081a06de2반례를 못찾겠습니다... 어느 부분이 틀렸는지 도와주시면 감사하겠습니다.
-
해결됨세계 대회 진출자가 알려주는 코딩테스트 A to Z (with Python)
제가 이해한 칸토어집합 문제를 풀어서 써봤습니다.
나중에 강의를 복습 할 때 제가 어떤식으로 문제에 접근하고 이해하고 강의를 들었는지 회고 하기 위해서 기록 해둡니다. 또한 제가 이해한 부분이 다른 분들에게 도움이 되면 더 좋겠습니다.목표문자열 길이가 주어지면 길이가 1이 될때까지 - - 형태로 바꾸는 문제제약조건1 <= N <= 12어떻게 해결?입출력 결과를 보면 아래와 같이 추론이 가능하다.ans[0] = 3⁰ = 1 => -ans[1] = 3¹ = 3 => - -ans[2] = 3² = 9=> - - - -=> ans[2-1] + 3²⁻¹ + ans[2-1]결론적으로=> ans[i-1] + 3ⁱ ⁻ ¹ + ans[i-1]이러한 규칙을 찾을 수 있다.시간 복잡도칸토어 집합은 0부터 N까지 각 단계별로 3⁰ + 3¹ + 3² + ... 3¹² 만큼의 문자열을 처리해야 하므로 모든 합이 전체 연상량이다.0 <= N <= 12ans[0] ~ ans[12]ans[i]의 길이 : 3ⁱans[0] : 1ans[1] : 3ans[2] : 9- 위에 0,1,2일때 공백 - 합쳐서의 길이등비수열
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
남은 치즈관련 질문
안녕하세요 큰돌님. 남은 치즈가 몇개인지 확인하기 위해 cnt2 = v.size(); 하여서 나중에 출력하는 것으로 구현을 하셨는데 왜 v.size()를 변수에 할당해야하는 특별한 이유가 있을까요? cnt2라는 변수 없이 코드를 작성해도 통과과 되어 질문드립니다.
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
7-A 질문있습니다 :)
안녕하세요 선생님 🙂 외판원 순회 문제 질문있습니다.dp를 비트플래그를 이용해서 방문여부를 체크한다는 아이디어가 정말 참신하게 다가오는 것 같습니다. 이 문제를 처음 접했을 때, 비트플래그가 아닌dp[MAX_N][MAX_N * MAX_N] 형태를 생각했었는데요, 이 방식으로 푼다면 배열의 범위가 dp[16][65536]이 아닌 dp[16][256]이 됩니다. 이게 시간복잡도와 공간복잡도 면에서 더 효율적이라고 생각이 들지만, 방문처리를 어떻게 해야할지 모르겠더라구요. 혹시 이렇게도 풀 수 있는 방법이 있을까요?
-
해결됨김영한의 실전 자바 - 중급 2편
코드오류 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.package collection.set.test; 의 RetangleTest 클래스에 관한 질문입니다package collection.set.test;import java.util.HashSet;import java.util.Set;public class RetangleTest { public static void main(String[] args) { Set<Retangle> retangleSet = new HashSet<>(); retangleSet.add(new Retangle(10,20)); retangleSet.add(new Retangle(20,10)); retangleSet.add(new Retangle(30,30)); for (Retangle retangle : retangleSet) { System.out.println(retangle); } }}중복된 값은 출력하지않아야하는데예시코드를 돌려보아도 중복된값을 출력하고있는 문제가있습니다package collection.set.test;import java.util.Objects;public class Retangle { private int width; private int height; public Retangle(int width, int height) { this.width = width; this.height = height; } @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; Retangle retangle = (Retangle) o; return width == retangle.width && height == retangle.height; } @Override public int hashCode() { return Objects.hash(width, height); } @Override public String toString() { return "Retangle{" + "width=" + width + ", height=" + height + '}'; }}이거는 Retangle 클래스입니다hashCode , eqauls를 오버라이딩했는데도 중복출력이되네요
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
8-K 펜윅트리 구간합 구하기 범위 질문 드립니다.
안녕하세요 큰돌님?오늘은 문제 입력의 범위가 이해가 안되서 질문 들고 오게 되었습니다.8-K 문제 입력 범위는 long long으로 이해가 됐는데요, 그에 맞게 tree 도 long long 까지 해설에서 선언을 해주셨습니다 근데 입력받는 n의 개수가 1~100만개 이므로tree 벡터 안에 구간합이 범위 초과가 나진 않는가요?worst로 (2^-63)-1 이 연속으로 들어오는걸 가정하고 있습니다. 이 문구 때문에 long long 그대로 진행해도 범위 초과가 안나는게 맞을까요? 답변 미리 감사합니다.
-
해결됨카카오 코테 6주 합격! 실전 파이썬 코딩테스트
안녕하세요. 혹시 강의에 사용되는 자료 받을 수 있을까요
기본 개념 설명, 기본 연습문제 등 강의하실 때 사용하시는 슬라이드, 강의 노트 같은 자료도 받을 수 있을까요.
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
변수 선언을 내부에서 해도 문제없나요?
안녕하세요 선생님. 강의 잘 보고 있습니다.당근카 답안코드에서 선생님은 큐와 ny nx를 메인 함수 내부에서 선언하셨습니다. 맨 처음에 사용할 모든 변수를 선언해놓는 것과 선생님의 방식 사이에서 궁금한 것이 생겼습니다. 제 생각에는 선생님의 방식대로면 상대적으로 조금 더 흘러가는 대로 자유롭게 코드를 짤 수 있을 것 같습니다. 하지만 혹시 코드가 복잡해지면 헷갈려서 실수 가능성이 올라가진 않을까 생각도 듭니다.그래서 그 둘을 그저 취향 차이로 여겨도 되는지 아니면 편의성과 성능 측면에서 우세한 것이 있는지 알고 싶습니다.감사합니다. - 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
-
미해결김영한의 실전 자바 - 중급 2편
타입 이레이저 동작방식 질문입니다!
안녕하세요! 이번에 정처기 문제에서 타입 이레이저 관련 문제가 나왔는데, 궁금한 점이 생겨서 질문 올려봅니다.class Printer { void print(Integer a) { System.out.print("A" + a); } void print(Object a) { System.out.print("B" + a); } void print(Number a) { System.out.print("C" + a); } } public class Gisafirst { public static void main(String[] args) { new Container<>(0).print(); } public static class Container<T> { T value; public Container(T t) { value = t; } public void print() { new Printer().print(value); } } }제가 이해한 바로는, 강의에서 설명해주신대로 new Container<>(0)에서 public static class Container<Integer> { Integer value; public Container(Integer t) { value = t; } public void print() { new Printer().print(value); } }컴파일러가 컴파일 시점에 이렇게 이해하고 나서 컴파일 종료 후, 타입 소거가 일어나서, Object로 변환한다고 이해했습니다.그래서 print 메서드를 호출할 때 value는 Object 타입이므로 B0가 출력되는 것이죠.여기서 궁금한 점은 바로 print의 오버로딩 메서드 선택 시점입니다. 제가 찾아본 바로는 오버로딩 메서드 선택시점은 컴파일 단계에서 이루어진다로 알고있습니다. 그렇다면 동작방식이 컴파일 종료 후 타입 소거가 일어나는게 아니라, 정확히는"컴파일 시작 - 타입 소거 - 오버로딩 메서드 선택 - 컴파일 종료 - 런타임" 이런식으로 일어나는건가용?아니면 어디서 오해하고 있는지 궁금합니다!
-
미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
for loop 탈출은 return 문으로 해도 되지 않나요?
일곱난쟁이 문제에서, 가짜 난쟁이 둘을 발견 후에 for loop를 멈출 때 splice를 한 arr를 for loop에서 return arr 하면 전체 for loop에서 탈출하는데 그걸 사용해도 되지 않나요?
-
해결됨김영한의 실전 자바 - 중급 2편
해시 충돌에 대해서 질문이요
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요. 궁금증이 생겨서 질문을 올립니다.해시 리스트? 를 만들고, 데이터를 넣다 보면 어쩔 수 없이 해시 충돌이 일어날 수 밖에 없을것 같은데요.여기서 질문이 생깁니다.영한님이 쓰신 대로 링크드 리스트를 이용해서, 해시 리스트를 만들었다고 치고데이터를 넣다 보니, 해시 충돌이 여러 번 일어나는 경우가 생겼습니다. 여기서 해시 충돌이 몇번 일어 나는게, 최악의 상황인가요?캐파시티를 40개 로 해 놓고, for문으로 8만개의 숫자를 넣어보니사진처럼 나오던데요. (제컴 기준 i3, 렘16기가)즉 질문은해시 충돌을 계속 일으켜야 하는 상황 이라면, 해시 충돌을 몇 번 일으 키는게 메모리 상? 안전한가요?답변 부탁 드립니다.
-
미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
질문
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 송아지 찾기 ch = new int[10001];10001 로 선언하는 이유가 확실히 이해가 가지 않아요...범위가 1부터 10000인데 왜 ch 배열의 크기는 10001로 설정하셨나요...?ㅠㅠ 감사합니다.
-
미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
투포인트알고리즘으로 풀어봤습니다.
투포인트 알고리즘을 생각하고 풀어봤는데 슬라이딩 알고리즘과 투포인트중에 어떤걸 선택해도 상관 없는건가요 ?/** *@function 최대매출 *@description 최대매출 알고리즘 문제 풀이 */ function solution(m, arr) { let answer = 0; let sum = 0; let lt = 0; let n = arr.length; for (let i = 0; i < m; i++) { sum += arr[i]; } answer = sum; for (rt = m; rt < n; rt++) { sum += arr[rt] - arr[lt++]; if (answer < sum) { answer = sum; } } return answer; } let arr = [12, 15, 11, 20, 25, 10, 20, 19, 13, 15]; console.log(solution(3, arr));
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
7-B Check함수 질문있습니다
안녕하세요, 대각선 방향일 때 check함수에서 a[y-1][x] ==0 && a[y][x-1]==0 이 조건부가 왜 필요한지 모르겠습니다 ㅠ.만약, 선생님의 변수명대로 설정하고n=3,a배열:[0] [0] [0][0] [0] [1][0] [1] [0]if(check(2,2,1)) dp[2][2][1] += dp[1][1][1]; 로직에서 check함수를 호출햇을 때를 가정하면,a[1][2] 와 a[2][1]이 벽이더라도 갈수 있지 않나요? 때문에 check함수에서 true를 반환해야한다고 생각됩니다ㅠㅠ
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3-N 해설 코드 의견 있습니다.
있어서 나쁠건 없지만, 반드시는 필요하지 않은 코드라고 생각합니다.이미 if(s>e) return 에서 모든 기저사례를 담당해주고 있습니다. 아래 스샷 7~10 라인을 지워서 제출해도 물론 정답입니다.http://boj.kr/feca52c9e36a47cf8d9ee4d51dcc6251 더 짧은 코드를 추구하신다면 반영해도 좋을 것 같아 의견 남깁니다.
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3-D 질문있어요.
안녕하세요 큰돌님.fire_check[i][j] = 1, person_check[sy][sx] = 1; 이 부분에서 1로 시작하는 이유가 탈출을 가정하기 때문에 0부터 시작하면 가장자리 도착시 + 1을 해주어야해서 편의상 1부터 시작하는 것일까요? 아니면 다른 이유가 있을까요?
-
미해결김영한의 실전 자바 - 중급 2편
Tree
혹시 스택,큐,set, hash등의 강의는 있는데, tree 에 대한 강의는 없는 것 같은데 다른 편에서 Tree 에 대해서 어느정도라도 다루어주시나요 ?
-
미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
코드 리뷰 부탁드립니다.
문제를 보고 제가 직접 먼저 풀어봤는데 답은 맞게 나오는데 , 뭔가 좀 허술한 부분이 있을거 같아서요 ,코드 리뷰좀 부탁드립니다. function solution(a, b, c) { let cnt = 0; let sum = 0; let lt = (rt = 0); while (lt < a && rt < a) { rt++; sum += c[rt]; if (sum === b) { cnt++; lt++; sum -= c[lt]; } } return cnt; }