묻고 답해요
160만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결2주만에 통과하는 알고리즘 코딩테스트 (2024년)
유니온파인드
유니온 파인드 문제에서 최적화 후 정답이 나오지 않고 오류가 나옵니다. 유니온 함수만 최적화 했습니다.
-
미해결김영한의 실전 자바 - 중급 2편
강의 중 이중연결리스트
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예[질문 내용]여기에 질문 내용을 남겨주세요. 이중연결리스트는 안다루나요?
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3-G 질문 있습니다.
http://boj.kr/2cd5a4c0ee0241ee8e0b68be6d2a9ac2 46%쯤에서 틀리는데 이전 질문 글들을 확인하니까 1 14 (정답은 5 4인데 5 1 이 출력됨)의 경우 왜 안되는 것인지 도저히 모르겠습니다...
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
DP 초기메롱 질문
DP(동적 계획법)에서는 " '초-기-메-롱' 패턴이 쓰인다고 하셨는데,이 패턴은 탑다운 방식에만 적용 가능한 건가요?그렇다면 바텀업 방식의 경우, 이 문제를 DP로 판단할 수 있는 기준은 무엇인가요?예를 들어 아래 두 가지 조건으로 DP 여부를 구분할 수 있을까요?점화식을 사용한다.이전 값을 그대로 가져와서 사용한다.또, dp[i] = dp[i-1] + dp[i-2] 같은 식도 메모이제이션이라고 볼 수 있나요?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
4-J번 질문있습니다
항상 좋은 강의 감사합니다.올려주신 답안 31번째 줄에 (s & (1<<k)) != 0) 이런 코드가 있는데 (s & (1<<k)) == 1)과 다른 의미인가요?0 또는 1 두가지 경우밖에 없어서 이렇게 코드를 짰는데 계속 답이 안 나와서 질문 드립니다.
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3-B 틀린 점을 모르겠습니다.
https://inf.run/Ryau5BFS를 이용해서 풀었는데 왜 틀린 지를 모르겠습니다...테스트 케이스는 통과 했습니다.
-
미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
궁금한게 있습니다 배열의 범위가 왜 1~5까지인지 모르겠습니다!
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 배열의 인덱스를 혹시 for(int i = 0; i < n; i++){for(int i = 0; i < 5; i++){ arr[i][j] = sc.nextInt(); }} 이렇게 하면 안되는 이유가 있을까요?
-
해결됨38군데 합격 비법, 2025 코딩테스트 필수 알고리즘
키보드 질문
안녕하세요! 수업 내용 관련해서 질문은 아니고 혹시 영상에서 쓰시는 키보드 어떤 건지 알려주실 수 있나요??(소리가 너무 찰져서 궁금합니다 ㅎㅎ) 감사합니다.
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
7-T 5557번 1학년 문제 질문입니다.
일단 제가 틀린 코드인데,#include <bits/stdc++.h> using namespace std; typedef long long ll; int n, a[102]; ll dp[102][102]; // sum은 음수가 되면 안됨. 20을 넘어서도 안됨. ll go(int sum, int cnt) { if (sum < 0 || sum > 20) return 0; if (cnt == n - 1) { if (sum == a[n]) return 1; else return 0; } ll& ret = dp[sum][cnt]; if (ret != -1) return ret; ret = 0; ret += go(sum + a[cnt + 1], cnt + 1); ret += go(sum - a[cnt + 1], cnt + 1); return ret; } int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); cin >> n; memset(dp, -1, sizeof(dp)); for (int i = 1; i <= n; ++i) { cin >> a[i]; } cout << go(0, 0); }물론 이 방법이 불필요한 과정이 들어있는 것은 맞지만, 예제도 다 통과했고 결국 같은 과정을 거친다고 생각했는데, 오답이라고 나옵니다.그래서 a[0]부터 접근하는 코드로 변경했을 때는 정답이라고 나오는데 어떤 차이점인지 잘 모르겠습니다.https://inf.run/hL4B9
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
4-P질문입니다
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. #include<iostream> #include<algorithm> #include<vector> using namespace std; int n,ret; vector<int> v; stack<int> st; int check(int i,vector<int> &v){ int cnt=0; int mx =0; for(int j = i+1; j<n; j++){ if(v[j]<= v[i]){ if(v[j]>=mx && v[i]>=mx) { cnt++; if(j == i+1) mx = v[j]; else mx = max(mx,v[j]); } else{ break; } } else if(v[j]>v[i]){ cnt++; break; } } return cnt; } int main(){ ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); cin>>n; for(int i =0; i<n;i++){ int num; cin>>num; v.push_back(num); } for(int i=0;i<n-1;i++){ ret += check(i,v); } cout<<ret; return 0; } 이 코드에서 예제는 통과하지만 틀리는 이유를 잘 모르겠습니다. 처음에는 스택을 하려고 했다가 매번 특정한 위치에 접근하는 것이 스택은 안되기에무식한 방법으로 풀어보는 시도를 위해 vector를 이용해 보았습니다(번외 질문반례는 순수 노가다를 통해서 찾는건가요? 아님 다른 방법이 있을까요?
-
미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
업데이트 되면서 사이트에 문제가 다내려가고 채점버튼도 안보임
안녕하세요 강의 수강중이던 학생입니다. 현재 인프런이 업데이트 된 후에 채점사이트에 문제가 다내려가고 채점 버튼도 보이지 않는데 어떻게 된걸까요 ㅜㅜ
-
해결됨38군데 합격 비법, 2025 코딩테스트 필수 알고리즘
2-6 LinkedList 합계 자바 풀이
1. 현재 학습 진도몇 챕터/몇 강을 수강 중이신가요? 2-6어떤 알고리즘을 학습하고 계신가요? LinkedList여기까지 이해하신 내용은 무엇인가요? 어떻게 로직이 흘러가는지 이해가 된 상태 입니다. 2. 어려움을 겪는 부분어느 부분에서 막히셨나요? 어려운 부분은 아니고 뭔가 제 풀이에 대해서 공유 해드리고 싶습니다!코드의 어떤 로직이 이해가 안 되시나요? 이해가 안되진 않는 것 같습니다!어떤 개념이 헷갈리시나요? 없습니다! 3. 시도해보신 내용문제 해결을 위해 어떤 시도를 해보셨나요? 우선 값들을 StringBuilder 로 만들어서 각각 Int로 파싱한다음 더해주는 과정을 해보았습니다.에러가 발생했다면 어떤 에러인가요? 없습니다!현재 작성하신 코드를 공유해주세요 package algorithm_practice.second_week; public class GetLinkedLiistSum_01 { // Node 클래스 정의 static class Node { int data; Node next; Node(int data) { this.data = data; this.next = null; } } // LinkedList 클래스 정의 static class LinkedList { Node head; public LinkedList(int value) { this.head = new Node(value); } public void append(int value) { Node cur = head; while (cur.next != null) { cur = cur.next; } cur.next = new Node(value); } } // 두 연결 리스트의 합을 계산하는 메서드 public static int getLinkedListSum(LinkedList list1, LinkedList list2) { StringBuilder firstNumber = new StringBuilder(); StringBuilder secondNumber = new StringBuilder(); Node cur1 = list1.head; Node cur2 = list2.head; while (cur1 != null && cur2 != null) { firstNumber.append(cur1.data); secondNumber.append(cur2.data); cur1 = cur1.next; cur2 = cur2.next; } int result = Integer.parseInt(firstNumber.toString()) + Integer.parseInt(secondNumber.toString()); return result; } // 메인 실행 테스트 public static void main(String[] args) { LinkedList linkedList1 = new LinkedList(6); linkedList1.append(7); linkedList1.append(8); LinkedList linkedList2 = new LinkedList(3); linkedList2.append(5); linkedList2.append(4); int result = getLinkedListSum(linkedList1, linkedList2); System.out.println("두 연결 리스트의 합: " + result); // 예시: 1032 } } 파이썬 코드를 자바로 변환해서 풀어봤는데 이렇게 접근해도 좋은 풀이 일까요~? 이렇게 구체적으로 알려주시면, 더 정확하고 도움이 되는 답변을 드릴 수 있습니다! 😊
-
해결됨세계 대회 진출자가 알려주는 코딩테스트 A to Z (with Python)
종료 조건
원래 상태로 돌아오기까지 4n번의 횟수가 걸린다는 것은 이해를 했습니다. 그런데 제가 처음에 생각한 종료 조건은 둘 중 하나의 큐라도 비어있게 된다면 합을 같게 만들 수 없는 경우라 생각했습니다. 그런데 시간초과가 발생하네요.하나의 큐가 원래 상태로 돌아가기 위해서는 그 과정에서 반드시 원소가 하나도 없는 경우가 생길것이라 생각했는데 아닌건가요?
-
미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
마지막 테스트 케이스에서 타임에러 발생하는데 이유를 모르겠어요 (해결완료)
import java.util.LinkedList; import java.util.Queue; import java.util.Scanner; public class Main { static int n, m, left=0; static int[][] boxes; static int[][] directions = new int[][]{{-1, 0}, {0, -1}, {1, 0}, {0, 1}}; static Queue<Integer[]> q; public int BFS() { /* 정수 1은 익은 토마토, 정수 0은 익지 않은 토마토, 정수 -1은 토마토가 들어있지 않은 칸 | 모두 익을 때까지의 최소 날짜 nx-1, ny | nx, ny-1 | nx+1, ny | nx, ny+1 */ if (left==0) return 0; int L = 0; while (!q.isEmpty()) { int size = q.size(); for (int i=0; i<size; i++) { Integer[] point = q.poll(); for (int j=0; j<4; j++) { int nx = point[0] + directions[j][0]; int ny = point[1] + directions[j][1]; if (nx>=0 && nx<n && ny>=0 && ny<m && boxes[nx][ny]==0) { left--; boxes[nx][ny] = 1; q.offer(new Integer[]{nx, ny}); } } } L++; } if (left >0) return -1; return L-1; } public static void main(String[] args) { Scanner kb = new Scanner(System.in); m = kb.nextInt(); n = kb.nextInt(); boxes = new int[n][m]; q = new LinkedList<>(); for (int i=0; i<n; i++) { for (int j=0; j<m; j++) { boxes[i][j] = kb.nextInt(); if (boxes[i][j]==1) q.offer(new Integer[]{i, j}); if (boxes[i][j]==0) left++; } } Main main = new Main(); System.out.println(main.BFS()); } } 코드는 위와 같이 짰는데 계속 타임 에러가 발생해서 강의를 들었습니다.. 제가 보기엔 강사님이 짜신 거랑 차이를 모르겠는데 제 코드의 어떤 부분이 문제가 됐을까요?===========================AI 답변 보고 혹시나 싶어서 강사님이 하신대로 Point class 를 따로 만들어서 진행했더니 해결됐습니다..!!!! 배열로 선언한 것과 차이가 있네요
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
왜 틀렸는지모르겠어요
http://boj.kr/18a6291908d8406da6779291cda4097b
-
미해결김영한의 실전 자바 - 중급 2편
LinkedList의 for-each 동작 방식이 궁금합니다.
본 강의 약 10분 쯤에 나오는 코드private static boolean contains(LinkedList<Integer>[] buckets, int searchValue) { int hashIndex = hashIndex(searchValue); LinkedList<Integer> bucket = buckets[hashIndex]; for (Integer integer : bucket) { if (integer == searchValue) { return true; } } return false; }이 부분에서 배열은 각 인덱스의 요소를 하나씩 꺼내는데 LinkedList는 어떤식으로 for-each문을 사용하는지 궁금합니다.
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
성능 비교 관련해서 질문 있습니다.
안녕하세요 큰돌님 강의 잘 듣고 있습니다.저는 공부할 때 제가 짠 코드랑 큰돌님이 짠 코드 그리고 채점현황에 있는 다른 사람코드를 보며 걸린 시간을 자주 비교해봅니다.걸린 시간이 차이나는 건 해결방법의 시간복잡도의 차이가 있어서겠지만, 코드를 비교하다보면 꽤나 자주 문제를 푸는 방법이 비슷한데도 불구하고 걸린 시간 차이가 유의미해 보이는 경우가 있습니다.예를 들면 4-F문제의 경우 큰돌님이 공유해주신 코드는 124ms걸렸습니다. (제가 다시 큰돌님 코드 그대로 다시 돌려봤을 때는 100ms 걸렸습니다.)http://boj.kr/7943b7d08dcb4d30bec01eabbf160e77그리고 제가 큰돌님 코드를 참고해서 다시 짠 코드는 24ms가 걸렸습니다.http://boj.kr/e57959b67c14428ab1a14942f45f667e큰돌님꺼 보고 짠거라 논리는 거의 똑같은데 4~5배 정도의 시간차이가 나서 꽤 유의미한 차이가 나는 것에 의문이 들었습니다.하지만 제가 그 우의미한 시간 차이의 원인을 찾기는 힘들었습니다.백준 테스트케이스의 구성에 따라서 같은 성능을 가진 두 코드라도 걸린 시간의 유의미한 시간 차이가 생길 수 있는 걸까요?걸린 시간 차이가 왜 생겼는지 고민해보는 건 좋겠지만 이 정도의 코드 차이에 대해서 걸린 시간 차이가 왜 생겼는지 고민해보는 건 불필요할까요?아니면 제가 생각히지 못하는 두 코드의 유의미한 성능에 영향을 주는 요소가 있을까요?이런 비교를 하는데 너무 시간을 쓰는 건 아닐까 고민이 되기도 해서 질문드립니다.감사합니다.
-
해결됨코딩테스트 [ ALL IN ONE ]
list1.append(list2)와 list1.append(list2[:])의 차이가 무엇인가요?
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.안녕하세요 def solution(l,k): result = [] curr = [] def backtracking(start, curr): if len(curr) == k: result.append(curr[:]) return for i in range(start, len(l)): curr.append(i+1) backtracking(i + 1, curr) curr.pop() backtracking(0, curr) return result위의 코드에서 if len(curr) == k: 안에 result.append(curr[:]) 대신 result.append(curr)을 넣으면 result = [[], [], [], [], [], []]와 같이 값이 제대로 추가가 안 되던데 무슨 차이가 있는 건가요?main 함수에서 test1 = [] test2 = [1,2,3] test1.append(test2) print(test1) test1 = [] test1.append(test2[:]) print(test1)이와 같이 테스트를 해보면 두 프린트 결과 모두 [[1,2,3]]으로 동일하게 나오는데 위의 경우는 달라서 질문 드립니다.
-
해결됨코딩테스트 [ ALL IN ONE ]
라이브러리 사용
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.안녕하세요 선생님! 수업을 듣다가 궁금한 점이 생겨 남깁니다. hash table 파트에서 중복없이 해야 한다면 dictionary 로 하는 것보다 set()을 써서 하는게 더 편하지 않나요? 순열, 조합 파트에서 백트래킹 대신에 from itertools import permutations, combinations를 사용해서 풀어도 되나요? 혹시 순열, 조합, 부분집합 이외에 백트래킹을 활용해야 하는 코딩테스트 문제는 추가적으로 어떤 것이 있는지 궁금합니다!
-
해결됨38군데 합격 비법, 2025 코딩테스트 필수 알고리즘
이 번에 처음으로 알고리즘이라는 걸 공부해보고 있는데
1주차 연습문제를 안보고 풀 정도면 혹시 어느정도 수준일까요..?ㅜㅜ 지금은 너무 어렵긴한데 계속 복습해봐야 할 것 같아서요 흑흑..실제 코테는 이정도 수준으로는 안나오겠죠... 더 어렵게 나오겠죠..?ㅜㅜ