묻고 답해요
148만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3-D INF로 fire_check를 초기화해야 하는 이유
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.안녕하세요 큰돌님 강의 잘 듣고 있습니다. 다름이 아니라 큰돌님이 fire_check배열을 INF로 초기화해줘야 하는 이유가 불이 아것도 없을 때 때문이라고 하셨는데 그불이 없는 위치는 지훈이가 갈 수 있는거 아닌가요?왜 INF로 초기화를 해줘야 하는 지 잘 이해가 가지 않습니다ㅠㅠㅜ 전체적인 예시를 통해서 설명해주실 수 있을까요?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
1-C 왜 오류가 났는지 모르겠습니다 ㅠㅠ
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.안녕하십니까 강의 재밌게 잘 듣고 있습니다.최대한 저의 힘으로 풀어보고 강사님의 풀이방법을 보고 더 발전시키려고 노력하고있습니다.저의 접근 방법은1. 차가 들어오는 제일 빠른시간, 차가 나가는 제일 늦은 시간을 for문의 범위로 잡았습니다.2. 그리고 for문 안에 변수 cnt를 만들고 i가 차량들의 시간 안에 있으면 cnt++를 해서 한 시간마다 가격을 더해주는 방식을 했습니다.좁은 식견으로인해 제가 어느 부분에서 놓친게 있는지 도저히 알지를 못하겠어서 질문 올립니다.링크: http://boj.kr/d13e7471e6f54ce88888460bf1ed9c0f
-
미해결김영한의 실전 자바 - 중급 2편
ObejctBox 질문
안녕하세요.ObjectBox를 활용하여 int와 String을 받는 과정에서 중복은 해결하였으나 잘못된 타입을 넣을 경우에 대한 예시 들었던 부분에서 질문입니다.integerBox.set("문자100"); Integer result = (Integer)integerBox.get();이 부분에서 문의드릴게 실제 컴파일을 하기 전까지는 ide에서 에러라고 인식을 못하던데 왜 그런걸까요 ? get()을 통해 리턴되는게 object 타입이어도 실제 객체가 Integer 객체가 아니면 저렇게 (Integer)로 캐스트 하는 것 부터가 문제가 되야 할 거 같아서요. 감사합니다.
-
미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
영상보기전 풀어봤습니다.
const solve = (str) => { let answer = '' let count = 1; for (let i = 0; i < str.length; i ++) { if (str[i] === str[i + 1]) { count ++; } else { answer += count !== 1 ? `${str[i]}${count}` : `${str[i]}` count = 1; } } return answer }대략적인 내용은 비슷한거 같습니다.
-
해결됨2주만에 통과하는 알고리즘 코딩테스트 (2024년)
17611번 자바
import java.util.*; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int[] x = new int[1000001]; int[] y = new int[1000001]; // 첫 번째 꼭짓점 int firstW = sc.nextInt() + 500000; int prevH = sc.nextInt() + 500000; int prevW = firstW; // 나머지 꼭짓점 for (int i = 1; i < n; i++) { int w = sc.nextInt() + 500000; int h = sc.nextInt() + 500000; if (prevW == w) { // 수직선 y[Math.min(prevH, h)]++; y[Math.max(prevH, h)]--; } else { // 수평선 x[Math.min(prevW, w)]++; x[Math.max(prevW, w)]--; } prevW = w; prevH = h; } // 마지막 꼭짓점과 첫 번째 꼭짓점 연결 if (prevW == firstW) { // 수직선 y[Math.min(prevH, firstW)]++; y[Math.max(prevH, firstW)]--; } else { // 수평선 x[Math.min(prevW, firstW)]++; x[Math.max(prevW, firstW)]--; } // 큰 값 찾기 int xMax = 0; int yMax = 0; for (int i = 1; i < 1000001; i++) { x[i] += x[i - 1]; // 이전 값이랑 누적합 y[i] += y[i - 1]; xMax = Math.max(x[i], xMax); // 큰 값 비교 yMax = Math.max(y[i], yMax); } System.out.println(Math.max(xMax, yMax)); } }안녕하세요 17611번 문제 자바로 풀고있습니다.백준 게시판과 인터넷에 공유된 풀이가 거의 없어 커뮤니티에 질문 올리게 되었습니다. 문제에서 주어진 예를 테스트 했을 때는 잘 작동하는데, 제출시에(40%쯤) '틀렸습니다' 라고 나옵니다. 해당 코드로는 작동하지 않는 반례 또는 식의 오류를 알려주세요. 감사합니다.
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
해당 문제를 제대로 이해한게 맞을까요?
안녕하세요. 문제의 요지를 제대로 파악한게 맞을지 해서 질문 남깁니다. 곱셈한 수가 커지는 것을 방지하고 모듈러 연산을 통해 나머지를 구하는 문제인가요?
-
미해결비전공자의 전공자 따라잡기 - 자료구조(with JavaScript)
숙제 최소힙 만들기
class Heap { arr = []; #reheapUp(index) { if (index > 0) { const parentIndex = Math.floor((index - 1) / 2); if (this.arr[index] > this.arr[parentIndex]) { // 값 바꾸기 const tmp = this.arr[index]; this.arr[index] = this.arr[parentIndex]; this.arr[parentIndex] = tmp; this.#reheapUp(parentIndex); } } } #reheapDown(index) { if (index > 0) { const parentIndex = Math.floor((index - 1) / 2); if (this.arr[index] < this.arr[parentIndex]) { const tmp = this.arr[index]; this.arr[index] = this.arr[parentIndex]; this.arr[parentIndex] = tmp; this.#reheapDown(parentIndex); } } } insert(value) { const index = this.arr.length; this.arr[index] = value; // 마지막에 값을 넣어준다. this.#reheapUp(index); } insertDown(value) { const index = this.arr.length; this.arr[index] = value; this.#reheapDown(index); } remove() { // root만 remove } search(value) { for (let i = 0; i < this.arr.length; i++) { if (arr[i] === value) { return i; } } } } const heap = new Heap(); heap.insert(8); heap.insert(19); heap.insert(23); heap.insert(32); heap.insert(45); heap.insert(56); heap.insert(78); const downHeap = new Heap(); downHeap.insertDown(78); downHeap.insertDown(56); downHeap.insertDown(45); downHeap.insertDown(32); downHeap.insertDown(23); downHeap.insertDown(19); downHeap.insertDown(8); console.log(downHeap.arr);reheapDown 이라는걸 만들어서 최소힙 만들기를 해보았는데 부모 index의 값과 비교하는 조건문의 부등호 방향만 바꾸니까 되는데 이게 맞나요...?
-
해결됨김영한의 실전 자바 - 중급 2편
문제와풀이1 문제2번 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.for (int i = 0; i < numbers.size(); i++) { System.out.print(numbers.get(i)); if(i<numbers.size()-1){ System.out.print(", "); } }i < number.size()-1 쪽이 제대로 이해가 안되는거같아서 질문합니다.정수 입력을 1,2,3 입력했으면 numbers.size() = 3i값 = 0 , numbers.size =3i값 = 1 , numbers.size = 3마지막 반복인 i값 = 2 , numbers.size = 3 을 할때는2<3-1 은 맞지않으니 마지막 3뒤에 " , " 출력안됨제가 이해한게 맞을까요 ?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
공부방법에 대한 질문!
공부방법에 대한 질문!안녕하십니까 큰돌선생님!어떻게 공부를 해야 하는지 헷갈려서 이렇게 질문을 남기게 되었습니다.강의에서 말씀해주신 방법대로, 직접 타이핑 하면서 교안을 숙지 중인데, 중간중간 0주차 개념강의도 참고하면서 함께 공부중입니다.제가 궁금한 점은, 이번주에 교안을 1회독 하고, 0주차 강의를 다 듣게 되면, 다음주부터 1주차 강의를 시작으로 쭉쭉 진행하면 되는지? 궁금합니다.!!
-
미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
Number를 써서 풀어봐도 될까요?
return Number(str.replace(/[^0-9]/g,''));이렇게만 작성했습니다.
-
해결됨김영한의 실전 자바 - 중급 2편
list.sort() vs Collections.sort()
강의 내용중 Comparable, Comparator 파트에서 List 데이터를 정렬할 때 Collections.sort() 와 list.sort() 중 list.sort를 권장하는 이유를 조금 더 자세히 알고 싶습니다.이 부분에서 list.sort()를 사용하는 게 더 객체지향적인 코드라고 말씀해주셨는데 List 인터페이스에 정의된 sort() 메서드를 사용하는 게 Collections class 에 정의된 static 메서드보다 어떤 측면에서 더 객체지향적인지 느낌은 오는데 이것 때문이다 라고 정리가 잘 안돼서 질문 드립니다. Collections 의 코드를 봤을 때 내부에서 Collections.sort(list, comparator)를 보게되면 list.sort(comparator) 메서드를 사용하고 있는데 그러면 굳이 Collections.sort()를 사용해야 할 케이스가 따로 있어서 정의한 것인지 어떤 경우에 사용하는지 궁금합니다. public static <T> void sort(List<T> list, Comparator<? super T> c) { list.sort(c); }
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
139p 우선순위큐 커스텀 정렬
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요139p 우선순위큐 커스텀 정렬을 넣을 때 반대로 넣어야 하는 특징이있다고 적혀있습니다. 뭔가 큐의 성질과 관련이 있을 것 같은데 자세한 원리를 알고 싶습니다. 반대로, 우선순위 큐가 아닐 때에는 어떤 원리인지도 궁금합니다. 감사합니다
-
미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
정렬
안녕하세요 코드보고 공부하다가 궁금한 점이 생겨서 질문 남깁니다.문제에서 가수가 라이브한 곡 순서대로 부른곡의 길이가 분 단위로 나타난다고 하였습니다.예시에서는 오름차순으로 잘 정렬되어있지만 가수가 라이브한 곡들의 길이가 뒤죽박죽되어있을때도 있을것을 고려해 배열을 정렬해준뒤 강사님의 풀이랑 똑같은 풀이를 적용하였는데 오답이라고 떴습니다.정렬메소드가 들어가면 왜 오답이 뜨는지 궁금합니다 !
-
해결됨코딩테스트 [ ALL IN ONE ]
카카오톡 오픈채팅
비밀번호가 뭔가요?ㅠ
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3 -N 출력초과
http://boj.kr/d796e238f3674969abcf7375867e2971안녕하세요 선생님. 코드가 논리적으로는 맞아보이는데 계속 출력초과가 나와서 어떠한 부분이 문제인지 찾아주시면 감사하겠습니다!
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-O 질문입니다 :)
안녕하세요 선생님 🙂 2-N의 풀이 법을 응용하여 풀이를 해보았는데요, 이해가 가지 않는 부분이 2가지가 있어서 질문 드립니다.http://boj.kr/73ed62b755394723a85ed0a257384a56이렇게 풀이하였을 경우에 다른 입력 값들은 전부 올바른 출력 값을 호출하지만, 6번째 입력 값의 출력 값만 오답이 되었습니다. stack의 top을 t라는 변수에 저장하여 문제를 풀이하였는데요, 이게 왜 오답을 호출하는지 하나씩 따져봐도 이해가 가질 않습니다.http://boj.kr/db3bdeaa5da0418dad6ededf3422b759t라는 변수를 삭제한 후에 stk.top()를 넣어 테스트케이스의 올바른 출력 값을 호출하였습니다. 하지만 무엇을 놓쳤는지 오답이 되더라구요;; ㅠㅠ 제가 무엇을 잘못했거나 놓쳐서 그럴텐데 이유가 무엇인지 알려주시면 감사하겠습니다 :)
-
해결됨2주만에 통과하는 알고리즘 코딩테스트 (2024년)
완전탐색(For 반복문) 6분 질문드립니다.
100만 이하의 약수가 존재하는지 확인할 때 반복문을 왜 101만까지 돌리는 건 가요? 저는 입력 받은 수까지 확인을 했었거든요... 이유가 궁금합니다!백만보다 큰지 안 큰지 확인하기 위함인 건 알겠는데 수학적으로 이해가 좀 안 가서 질문을 드립니다.추가적으로 알고리즘을 풀다보면 수학적인 지식이 좀 많이 부족하다고 느끼는데 어떻게 채우는 게 좋을지도 궁금합니다.. 6개월 정도 회사 다니면서 코테에만 집중해서 이직하는 게 현재 목표입니다. 제가 작성한 답안입니다.답 도출까지는 못했습니다.
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
각 주차별 문제를 제대로 풀지못하면 다음 주차는 힘들까요?
안녕하세요 선생님3주차 강의를 들으면서 학습중 인데요!2주차 까지는 문제 풀이방법을 외우는 방식으로 학습중인데요..3주차 학습중인 현재.. 어느정도는 외워지지만 일부는 이해가 되지 않아 외워지지 않습니다..그렇다면 이해가 될때까지 다음주차 학습을 미뤄야 하는게 맞을지 고민입니다.. 어떻게 학습하는게 좋을까요?경력 이직 준비중이고.. 시간이 많이 없는 상황이라 마음만 급하네요..ㅠ.ㅠ
-
미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
3. 문장속단어 BufferedReader
import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;public class Main { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String[] arr = br.readLine().split(" "); String tmp=""; for(String s:arr) { if(s.length()>tmp.length()) tmp = s; } System.out.println(tmp); }}BufferedReader 사용하면 결과가 pending이라고 뜨는데, 풀이가 잘못된 걸까요? 아님 BufferedReader사용때문에 그런걸까요?
-
미해결비전공자의 전공자 따라잡기 - 자료구조(with JavaScript)
숙제 length return 하기
class Node { constructor(value) { this.value = value; this.left = null; this.right = null; } } class BinarySearchTree { constructor() { this.root = null; // 숙제 몇개 인지 확인하는 count this.length = 0; } #insert(node, value) { if (node.value > value) { // 루트노드보다 작은 값이면 if (node.left) { this.#insert(node.left, value); } else { node.left = new Node(value); } } else { // 숙제 : 같은 값을 넣은경우 에러 처리 (alert, throw) if (node.value === value) throw new Error(`이미 해당 ${value}가 존재 합니다`); // 루트노드보다 큰 값이면 if (node.right) { this.#insert(node.right, value); } else { node.right = new Node(value); } } } insert(value) { if (!this.root) { this.root = new Node(value); } else { this.#insert(this.root, value); } this.length++; } #search(node, value) { if (!node) return null; if (node.value > value) { return this.#search(node.left, value); } else if (node.value === value) { return node; } else { return this.#search(node.right, value); } // if (node.value > value) { // // 더 작은값 찾을때 // if (!node.left) { // return null; // } // if (node.left.value === value) { // return node.left; // } // return this.#search(node.left, value); // } else { // if (!node.right) { // return null; // } // if (node.right.value === value) { // return node.right; // } // return this.#search(node.right, value); // } } search(value) { if (!this.root) return null; if (this.root.value === value) { return this.root; } return this.#search(this.root, value); } #remove(node, value) { if (!node) { // 제거 할 값이 bst에 존재하지 않는 경우 return null; // 지울 값이 존재 안하면 null return } if (node.value === value) { // 자식 입장 // 지울 값을 찾은 경우 if (!node.left && !node.right) { this.length--; // leaf return null; } else if (!node.left) { // 왼팔만 없는 경우 return node.right; // 왼팔이 없는 경우 자기 왼팔 대신 오른팔을 쓰라고 return 해줌 } else if (!node.right) { // 오른팔만 없는 경우 return node.left; // 오른팔 없는 경우 자기 오른팔 대신 왼팔을 쓰라고 return 해줌 } else { // 양팔 다 있는 경우 let exchange = node.left; while (exchange.right) { exchange = exchange.right; } const temp = node.value; node.value = exchange.value; exchange.value = temp; node.left = this.#remove(node.left, exchange.value); return node; } } else { // 부모 입장 if (node.value > value) { node.left = this.#remove(node.left, value); return node; } else { node.right = this.#remove(node.right, value); return node; } } } remove(value) { // 1. leaf(양팔 다 없음) -> 제거 // 2. leaf x, 왼팔이 없다 -> 오른팔 끌어올린다 // 3. leaf x, 오른팔이 없다 -> 왼팔 끌어올린다 // 4. leaf x, 양팔 다 있다 -> 왼팔에서 가장 큰 애와 바꾼다, leaf를 지운다 this.root = this.#remove(this.root, value); // return 숙제 length return 하기 return this.length; } } const bst = new BinarySearchTree(); bst.insert(8); bst.insert(10); bst.insert(3); bst.insert(1); bst.insert(14); bst.insert(6); bst.insert(7); bst.insert(4); bst.insert(13); console.log(bst.length); // 9 console.log(bst.remove(8)); // 8 bst.search(7); bst.search(5); console.log(bst.remove(4)); // 7 console.log(bst.remove(15)); // 없는 값을 지운다면 현재 length return 7 숙제 정답일까요?제발 ㅠㅠ 🙏