묻고 답해요
150만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
순위 정보를
불러오고 있어요
-
미해결2주만에 통과하는 알고리즘 코딩테스트 (2024년)
예제코드 자바입니다
복습하면서 자바로도 풀어봤어요 필요하신분들 확인!!https://github.com/hyukjunkim1116/algorithm-master-in-2weeks
-
미해결비전공자의 전공자 따라잡기 - 자료구조(with JavaScript)
heapify 안의 bigger 삼항연산자 질문
#heapify(index) { // 특정 값 수정, 삭제 const leftIndex = index * 2 + 1; const rightIndex = index * 2 + 2; const bigger = (this.arr[leftIndex] || 0 )> (this.arr[rightIndex] || 0) ? leftIndex : rightIndex; if (this.arr[index] < this.arr[bigger]) { const temp = this.arr[bigger]; this.arr[index] = this.arr[bigger]; this.arr[bigger] = temp; this.#heapify(bigger); } } bigger 삼항연산자에서 this.arr[leftIndex]의 값이 0 이고 this.arr[rightIndex]의 값이 undefined이면 조건이 false가 되면서 bigger에 rightIndex값이 들어가면서 오류가 생기는거 같습니다!
-
미해결코딩테스트 합격자되기-알고리즘 개념
코딩 테스트 대비 자료의 49페이지 Tip에 대한 질문입니다.
데이터 양이 많지 않으나 데이터 간의 간격이 큰 경우에 데이터 값을 인덱스로 사용하면 Memory Exception이 발생한다고 했는데, 이 말은 인덱스로 사용된 값들이 차이가 커서 결국 배열이 쓸데없이 커지므로 제한된 메모리를 초과할 가능성이 많다는 의미인가요??즉, 1, 10000 이란 값이 있을때에 이 값들을 인덱스로 쓰면 10000 요소를 가진 배열로 만들어 지지만, 유효한 값은 단 2개( 1과 10000의 인덱스가 가리키는 요소 )만이 들어있게 되고, 이 값의 차이가 크면 메모리에 담을 수 없을 만큼의 크기로 커진다는 의미이므로 피해야 한다는 말로 이해가 됩니다만..그리고, 구조체를 사용하라는 말의 의미가 값을 하나의 구조체로 해서 연결 리스트로 연관 지으라는 의미로 받아들여도 되나요? 혹시 잘 못 알았다면 어떤 의미인지 설명해 주시면 감사하겠습니다.
-
해결됨카카오 코테 6주 합격! 실전 파이썬 코딩테스트
사전문제 관련 질문
안녕하세요 이제 막 강의 듣기 시작한 취준생 입니다. 사전 문제 관련 수업 진행 방식에 대해서 질문이 있어서 글 남겼어요.섹션1 '이 강의를 극대화 하는법' 에서 사전 문제 먼저 풀고 -> 강의를 들으라고 하셨는데, 섹션2 시작할 때 사전문제 링크에 들어가보니까 1강부터 8강까지 총 8개의 파일이 있더라구요.그래서 궁금한 것이 생겼습니다.'1강_0.배경지식 퀴즈_촬영용' 이거를 혼자 풀어보고 -> 배열 만들기를 들어야 되는 건가요? 아니면 사전 문제에 있는 모든 파일을 풀어보고 강의를 듣는 건가요?? 파일명에 1강, 2강, 3강의 의미는 뭔가요?파일중에 '1강0.배경지식 퀴즈_촬영용' << 이건 뭐죠..? 2강_0.은 문제 -> 답이 구분되어 있어 퀴즈 형식이구나 싶은데 1강.0에 있는건 바로 답이 있어서 무슨 용도인지 모르겠어서요.. 촬영용이라고 적혀있는 것도 그렇고...질문 읽어주셔서 감사합니다.
-
해결됨38군데 합격 비법, 2024 코딩테스트 필수 알고리즘
1-5 알고리즘과 친해지기 (2)
1. 현재 학습 진도현재 1-5 알고리즘과 친해지기 강의 중 가장 많은 알파벳 출력하는 문제를 풀고 있습니다. 2. 어려움을 겪는 부분강사님께서 말씀해주신 부분은 가장 많이 사용된 알파벳을 찾는 함수를 구현하는 것인데 강사님께서 예제로 주신 string 값들이 모두 하나 이상의 최댓값을 가지고 있습니다. print("정답 = i 현재 풀이 값 =", result("hello my name is dingcodingco")) print("정답 = e 현재 풀이 값 =", result("we love algorithm")) print("정답 = b 현재 풀이 값 =", result("best of best youtube"))현재 풀이 값 = o,n,i 현재 풀이 값 = e,l,o현재 풀이 값 = b,e,t 강사님께서는 가장 많이 사용된 알파벳 중 제일 앞에 있는 알파벳을 출력하신 것 같습니다. 제가 1-6강을 아직 들어보지 않아서 이 부분에 대한 설명을 나중에 해주시는지 확인해 보지 않았지만 , 아무 설명도 없이 이렇게만 넘어간다면 저와 같이 헷갈리시는 분들이 많을 것 같아 질문 드립니다 🙂
-
미해결비전공자의 전공자 따라잡기 - 자료구조(with JavaScript)
LinkedList로 스택, 큐 구현하기 숙제
스택 부분class Stack { head=null; tail=null; length=0; push(value) { if (this.head) { this.tail.next = new Node(value); this.tail.next.prev = this.tail; this.tail = this.tail.next; } else { this.head = new Node(value); this.tail = this.head; } this.length++; return this.length; } pop() { let value = this.tail?.value; if (!this.tail) { // 값 존재 x return null; } if (this.tail === this.head) { // 값이 하나 this.head = null; this.tail = null; } else { // 값이 여러개 this.tail = this.tail.prev; this.tail.next = null; } this.length--; return value; } } class Node { next = null; prev = null; constructor(value) { this.value = value; } } const stack = new Stack(); stack.push(1); stack.push(3); stack.push(5); stack.push(2); console.log(stack.push(4)); // length 리턴 5 console.log(stack.pop()); // 4 console.log(stack.pop()); // 2 console.log(stack.pop()); 큐 부분class Queue { head = null; tail = null; length = 0; enqueue(value) { if (this.head) { this.tail.next = new Node(value); this.tail.next.prev = this.tail; this.tail = this.tail.next; } else { this.head = new Node(value); this.tail = this.head; } this.length++; return this.length; } dequeue() { let value; if (!this.head) { return null; } if (this.head === this.tail) { // 한 개 value = this.head.value; this.head = null; this.tail = null; } else { // 여러 개 삭제 value = this.head.value; this.head = this.head.next; this.head.next.prev = null; } this.length--; return value; } } class Node { prev = null; next = null; constructor(value) { this.value = value; } } const queue = new Queue(); queue.enqueue(1); // 1 queue.enqueue(3); // 3 queue.enqueue(5); // 5 queue.enqueue(2); // 2 queue.enqueue(4); // 4 console.log(queue.enqueue(7)); // 7 console.log(queue.dequeue()); // 1 console.log(queue.dequeue()); // 3 console.log(queue.dequeue()); // 5 console.log(queue.dequeue()); // 2 console.log(queue.dequeue()); // console.log(queue.dequeue()); // console.log(queue.dequeue()); // 큐 부분에서 콘솔 로그로 찍어 봤을 때 deque가 1,3,5,2 까지 진행 되고 그 이후에this.head.next.prev = null; ^TypeError: Cannot set properties of null (setting 'prev')이런 에러가 발생하는데 이유가 궁금합니다.
-
미해결카카오 코테 6주 합격! 실전 파이썬 코딩테스트
식 오류 있습니다.
안녕하세요. 강의를 듣고 있는 학생입니다.현재 1분 25초에 나오는 'O(logN)알고리즘을 선택한다면?' 부분의 식에서 7/log_10(2) 이 1/log_10(2)로 수정되어야 할 것 같습니다(log의 밑을 여기엔 수식으로 표현하지 못하여 log_10(10이 밑)처럼 표현했습니다.). 즉 7이 1이 되어야 합니다.감사합니다.
-
해결됨38군데 합격 비법, 2024 코딩테스트 필수 알고리즘
섹션4. 3주차 Stack 백준 2493
1. 현재 학습 진도몇 챕터/몇 강을 수강 중이신가요? 섹션4. 3주차 Stack 3-5어떤 알고리즘을 학습하고 계신가요?여기까지 이해하신 내용은 무엇인가요? 2. 어려움을 겪는 부분딩코님교재 스택부분 예제에 있는 백준 2493 , https://www.acmicpc.net/problem/2493선생님이 알려준 내용대로 이해하고 제출했으나 3개모두 시간초과가 뜹니다. pypy로 바꿔서도 해봣네용스택 학습이 우선적이기에 의도했다고 하더라도(제가 잘못 한걸 수도 있습니다!!!1)시간초과가 뜨지않길 원합니다, 어떻게 코드를 수정해야할까요 3. 시도해보신 내용 에러가 발생했다면 어떤 에러인가요? 시간초과현재 작성하신 코드를 공유해주세요 첫번째콛, -내가 작성n=int(input()) # 한 줄로 입력 받기 data = input().strip() numbers = list(map(int, data.split())) result=[] for i in range(n-1,-1,-1): cur_idx=i for j in range(i-1,-1,-1): if numbers[i]<numbers[j]: result.append(j+1) break elif j==0: result.append(0) result.append(0) while result: print(result.pop(),end=" ") 나머지코드- 딩코님의 작성n=int(input()) # 한 줄로 입력 받기 data = input().strip() top_heights= list(map(int, data.split())) def get_receiver_top_orders(heights): answer = [0] * len(heights) while heights: height = heights.pop() for idx in range(len(heights) - 1, -1, -1): if height <= heights[idx]: answer[len(heights)] = idx + 1 break return answer print(get_receiver_top_orders(top_heights)) # [0, 0, 2, 2, 4] 가 반환되어야 한다! n=int(input()) # 한 줄로 입력 받기 data = input().strip() top_heights= list(map(int, data.split())) def get_receiver_top_orders(heights): answer = [0] * len(heights) while heights: height = heights.pop() for idx in range(len(heights) - 1, -1, -1): if height <= heights[idx]: answer[len(heights)] = idx + 1 break return answer print(get_receiver_top_orders(top_heights)) # [0, 0, 2, 2, 4] 가 반환되어야 한다! 이렇게 구체적으로 알려주시면, 더 정확하고 도움이 되는 답변을 드릴 수 있습니다! 😊
-
해결됨[파이썬/Python] 문과생도 이해하는 DFS 알고리즘! - 입문편
침투/섬개수 질문
침투/섬의개수 질문드립니다. 침투 문제에서는 연속된 숫자가 들어와서 row=input() 이렇게 표현 하셨는데 연속된 숫자가 들어올거라는 것을 어떻게 유추할수 있을까요? 섬의개수 문제에서는 침투와 달리 row=list(map(int,input().split())) 이렇게 표현하셨는데, 침투랑 동일하게 row=input()으로 표현해도 되는거 아닌가요? 연결정보 채우는거에 대한 언급을 어떻게 찾는지 궁금합니다
-
미해결비전공자의 전공자 따라잡기 - 자료구조(with JavaScript)
linkedList prev와 tail 사용 후 o(1) 구현.
class LinkedList { length = 0; head = null; tail = null; add(value) { if (this.head) { this.tail.next = new Node(value); this.tail.next.prev = this.tail; this.tail = this.tail.next; } else { this.head = new Node(value); this.tail = this.head; } this.length++; return this.length; } search(index) { return this.#search(index)[1]?.value; } #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) { prev.next = current.next; this.length--; return this.length; } else if(current){ // index = 0 일 떄 current = current.next; this.length--; return this.length; } if (current.next === null) { // index = tail this.tail = current.prev; current.prev.next = null; this.length--; } // 삭제 대상 없을 때 아무것도 안함. } } class Node { next = null; prev = null; constructor(value) { this.value = value; } } const li = new LinkedList(); li.add(1); li.add(2); li.add(3); li.add(4); li.add(5); console.log(li.add(6)); console.log(li.remove(5)); console.log(li.remove(4)); console.log 찍었을때는 오류 없이 나온거 같은데 잘 구현 했나 궁금합니다!
-
해결됨코딩테스트 [ ALL IN ONE ]
강의자료 만들 때 사용하신 프로그램이 뭘까요?
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 강의하시면서 사용한 강의자료 퀄리티가 너무 좋아서 그러는데 혹시 어떤 프로그램 사용하셔서 만들었는지 알 수 있을까요?
-
미해결2주만에 통과하는 알고리즘 코딩테스트 (2024년)
정수론 파트 #2247 문제에 대한 질문입니다!
N = int(input()) temp = 0 for i in range(2, N//2 + 1): temp += (N//i) * i - i print(temp%1_000_000)안녕하세요! 강의중에서 2의 제곱 수를 구하는 아이디어를 바탕으로 위 코드와 같이 작성하였습니다. 처음 시도에선 range를 2에서 n+1까지 돌렸으나 시간초과라는 답을 받았고, 다음 시도에선 입력에 100이 주어졌을 경우에 51부터는 하나의 경우만 나오니 저런 식으로 범위를 줄이고 제출을 했으나 계속 시간초과라는 답만 받고있습니다.. 저의 생각에서 놓친 부분을 알고자 이렇게 문의드립니다..!(그리고 pypy3으로 제출했을 경우에는 맞다고 나옵니다..!)
-
미해결2주만에 통과하는 알고리즘 코딩테스트 (2024년)
코드 오류
18:12 코드가 for arr in hint라서 arr[0], arr[1], arr[2] 처럼 지정이 되어야 하는데 hint[0], hint[1], hint[2]로 되어 있습니다. (강의자료에는 제대로 나와있습니다.)
-
해결됨38군데 합격 비법, 2024 코딩테스트 필수 알고리즘
병합정렬 문제에서 조건이 하나 빠진 것 같습니다
1. 현재 학습 진도몇 챕터/몇 강을 수강 중이신가요? 3-4 2. 어려움을 겪는 부분병합 정렬 구현해볼 때 두 배열의 비교하는 값이 같은 경우에서의 처리가 안되어 있는 것 같습니다. 3. 시도해보신 내용while first_array_index < len(array1) and second_array_index < len(array2): if array1[first_array_index] < array2[second_array_index]: result_array.append(array1[first_array_index]) first_array_index += 1 elif array1[first_array_index] > array2[second_array_index]: result_array.append(array2[second_array_index]) second_array_index += 1 else: result_array.append(array1[first_array_index]) result_array.append(array2[second_array_index]) first_array_index += 1 second_array_index += 1 동일한 값을 비교할 경우 두 값을 모두 result 배열에 넣어줘야 하니까 else의 코드도 있어야 하지 않을까 생각이 들어 글 남깁니다! 좋은 강의 감사드립니다!
-
미해결2주만에 통과하는 알고리즘 코딩테스트 (2024년)
2강 정수론 문제3 #1407 질문
let [a, b] = require("fs") .readFileSync(0) .toString() .trim() .split(" ") .map(Number); function count(num) { let sum = num; for (let i = 1; i < 99; i++) { sum += (2 ** i - 2 ** (i - 1)) * Math.floor(num / 2 ** i); } return sum; } console.log(count(b) - count(a - 1));백준에 이렇게 제출하면 틀렸다는 답이 나옵니다. 어떤 문제일까요? ㅜㅜ BigInt로도 해봤는데 안 됩니다..
-
미해결2주만에 통과하는 알고리즘 코딩테스트 (2024년)
이차원 배열 (int형)dp로 0 혹은 -1로 체크하는 방법 말고 boolean형 배열로 체크해서 바로 리턴해줄 수 없나요?
제가 자바로 공부중이라 파이썬이 알고리즘 풀이에 좋은 건 알지만 코드 공부하는 겸 자바로 풀고 있습니다.그런데 자바는 배열은 선언하고 -1일 때는 따로 초기화를 해줘야되는 번거로움이 있습니다. 그래서 혹시 이차원 배열 (boolean형)으로 방문했는지 체크해서 문제를 풀 수 있는 방법이 있을까해서 질문드립니다.
-
미해결개발 역량 + 자격증까지, Java로 PCCP 자격증 준비하기
강의 업로드 오류
2-1, 2-2 강의 업로드 된 내용이 1-1,1-2와 동일해요
-
해결됨세계 대회 진출자가 알려주는 코딩테스트 A to Z (with Python)
17609 투포인터 문제를 재귀로 풀 경우가 궁금합니다!
파트 : 투 포인터 알고리즘 [문제풀이]: BOJ 17609투 포인터 알고리즘 [문제풀이] : BOJ 17609안녕하세요, 백준 17609 회문 문제를 혼자서 풀어봤을 때, 처음에 투 포인터 알고리즘으로 풀려고 left, right를 선정하고 양방향으로 오게 만들었습니다. 그런데 이때 문자가 다를 경우 left, right에 해당하는 문자를 각각 삭제해보고 안되면, 다시 돌아가는 방식백트래킹을 생각했고 재귀로 풀고자 했습니다. 아래의 코드로 풀면 답은 잘 나오는 거 같지만, 제출하면 메모리 초과가 발생합니다.제가 재귀의 개념을 잘 이해하지 못한 거 같은데, 이렇게 풀면 브루트포스 풀이가 되어서 정답이 아닌걸까요?그렇다면 해당 문제에서 '투포인터를 사용했을 때'와 저처럼 '재귀로 풀었을 때'의 큰 차이점이 무엇인지 궁금합니다..! 질문 받아주셔서 감사합니다:)import sys sys.setrecursionlimit(10**6) # 재귀 깊이 제한 늘리기 def recursion(value, left, right, count): global T # base if count > 1: return 2 if left >= right: return count # recursive if value[left] == value[right]: return recursion(value, left+1, right-1, count) else: # 1. right를 옮겨보기 skip_right = recursion(value, left, right-1, count+1) if skip_right == 1: return 1 # 2. left를 옮겨보기 skip_left = recursion(value, left+1, right, count+1) if skip_left == 1: return 1 return 2 T = int(input()) # 문자열 개수 arr = [input() for _ in range(T)] for value in arr: left = 0 right = len(value)-1 print(recursion(value, left, right, 0))
-
미해결김영한의 실전 자바 - 중급 2편
9강 해쉬맵 회원관리기능 연습문제 질문입니다
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]연습문제 회원 관리 기능을 만드는중 findByName에서 헷갈려서 질문을 남김니다. 다음은 제가 작성한 소스코드입니다/** * get 메서드는 key값을 통해서 value를 반환한다 * key-> id, value ->memeber * value의 구조는 STRING: ID, STRING NAME이므로 * value를 하나로 펼쳐서 순회한 다음, 이름에 맞는 member를 반환 * */ public Member findByName(String name) { Boolean findMember = memberMap.containsValue(name); if(findMember!=null){ for(Map.Entry<String, Member> entry: memberMap.entrySet() ){ String key =entry.getValue().getId(); String parameterName = entry.getValue().getName(); if(parameterName==name) { return memberMap.get(key); } } } return null; }다행히 결과는 문제 없이 돌아가가나 String key = entry.getValue().getId()에 디버그를 찍으면Boolean findMember = memberMap.containsValue(name);//findMember:false, name: 회원3다음과 같이 표기 되는데 분명 회원3의 값을 저장 했는데 왜 findMember가 false로 나오는 걸까요?이유가 궁금합니다. 그리고 제가 작성한 findByMember 로직이 맞을까요 ? 많은 피드백 부탁드립니다!
-
해결됨38군데 합격 비법, 2024 코딩테스트 필수 알고리즘
멜론 베스트 앨범 알고리즘 시각화 궁금중
1. 현재 학습 진도 현재 3주차 숙제 부분에서 3번째 문제인 멜론 베스트 앨범 알고리즘을 공부하고 있습니다. 2. 어려움을 겪는 부분이해가 되지 않는 부분이 있어서, 문의 드립니다.3. 장르 내에서 재생 횟수가 같은 노래 중에서는 고유 번호가 낮은 노래를 먼저 수록한다.해당 문제에 보면 , 위와 같은 조건이 존재하는데 , 제가 강의를 두 번이나 돌려보면서 듣고 있는데 ,강의 하신 내용에, 재생횟수가 같은 노래에 대해서는 처리하신 코드가 안 보이는데, 보내주신 코드를 프로그래머스에 돌려봐도 정상적인 답안이라고 나오더라고요.그래서, 해당 부분에 대한 설명이 있으면 더 좋을 듯 하고 궁금해서 질문드립니다.제가 생각한 부분은 이미for 문을 돌 때, 인덱스 순서대로 되어 있으므로, 재생횟수로 정렬을 해도 인덱스가 낮은 것이 무조건 앞으로 오게 된다. 이렇게 생각했는 데 맞는 것인지 궁금합니다.
주간 인기글
순위 정보를
불러오고 있어요