묻고 답해요
161만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨38군데 합격 비법, 2025 코딩테스트 필수 알고리즘
문제에 어떤 알고리즘을 적용할지 빠르게 결정하는 팁이 있을까요?
코딩 테스트 문제에 어떤 알고리즘을 적용해야 할 지 빠르게 결정할 수 있는 팁이 있는지 궁금합니다.가장 확실한 방법은 많이 풀어보는 방법이겠지만딩코딩코님만의 팁이 있는지 궁금합니다.
-
해결됨38군데 합격 비법, 2025 코딩테스트 필수 알고리즘
코테 준비
안녕하세요!현재 코딩테스트 준비중인 학생입니다. 백준에서 현재 문제 유형 별로(DFS, 백트래킹 등등..) 풀어 보고 있습니다. 문제는 구현같은 유형은 몰라도 풀 수 있지만 DP, N-queen문제는 해당 문제를 접해보지 않고서는 풀기 힘들다고 생각합니다.하루에 한 유형씩 제대로 이해하기 vs 한 유형만 쭉 풀어서 마스터하기 둘 중에 어떤게 더 좋은 접근법이라고 생각하시나요?막상 유형별로 풀자니 구현, DFS, BFS, DP유형이 코테에 많이 보이는거같아서 고민입니다.
-
해결됨김영한의 실전 자바 - 중급 2편
실프로젝트에서 Java25버전 사용
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]강의에서는 Java 21버전을 사용하고, 현재 최신 LTS 버전은 25입니다.실무에서는 21버전을 계속 사용하다가 25버전이 안정화되면 25버전을 사용하나요?아니면 22, 23, 24 바로 업데이트 하는 경우가 많을까요?
-
해결됨세계 대회 진출자가 알려주는 코딩테스트 A to Z (with Python)
(시간 초과) BOJ 1342 관련하여 질문이 있습니다
💡 질문 작성 가이드보다 빠르고 정확한 답변을 위해, 아래 사항을 참고해 질문을 작성해주세요.1. 간단한 내용은 ChatGPT로 먼저 확인해보세요.기본 개념이나 용어 설명은 ChatGPT를 활용하는 것이 더 빠르고 효율적일 수 있습니다.2. 질문하실 때, 아래 내용을 함께 적어주시면 좋아요.어느 파트인지섹션 3 - 브루트 포스 알고리즘[문제풀이]: BOJ 1342내가 이해한 내용재귀 + 백트래킹을 이용해서 푸는 방법(방법2) 중 선생님께서 작성하신 dict과 set 객체를 이용한 것이 아닌 collections.Counter를 이용하여 코드를 작성했더니 시간초과가 뜹니다. from itertools import permutations from collections import Counter s = input() def sol(lev): global s, counter, choose, ans # base case if lev == len(s): ans += 1 return # recursive case for k in chars: if counter[k] == 0: continue if (not choose) or (choose[-1] != k): counter[k] -= 1 choose.append(k) sol(lev + 1) choose.pop() counter[k] += 1 counter = Counter(s) chars = tuple(counter.keys()) choose = [] ans = 0 sol(0) print(ans)궁금한 점dict과 set을 이용해서 for문으로 직접 주입하는 방식과 Counter 컬렉션을 이용해서 사용하는 방식에 어떤 차이점 때문에 시간초과가 나는지 궁금합니다(참고로 python3로는 시간초과가 나지만, pypy3로는 통과가 됐습니다. 이 부분도 왜 그런지 궁금합니다.) 파이썬을 선생님 강의로 입문을 해서 그런지 파이썬 기초에 대해 지식이 많이 부족합니다. 알고리즘 본질이 아닌 파이썬에 대해 질문드려 죄송합니다
-
해결됨38군데 합격 비법, 2025 코딩테스트 필수 알고리즘
코테 준비생
아직 기초 알고리즘(예: 정렬, 재귀, DFS/BFS) 이해가 완벽하지 않아서요.강의에서 설명하신 접근법을 연습할 때,‘어떤 문제부터 푸는 게 효율적인지’ 혹은 ‘매일 어떤 루틴으로 연습하면 좋을지’ 팁을 주실 수 있을까요?
-
해결됨38군데 합격 비법, 2025 코딩테스트 필수 알고리즘
(섹션 3 퀴즈 관련) - 배열과 링크드 리스트 시간 복잡도 질문
섹션 3 퀴즈에서 헷갈리는 부분이 생겨서 질문드립니다. 문제의 일부는 아래와 같습니다. (정답은 B) 1. 배열과 링크드 리스트의 주요 성능 차이점 중 하나는 무엇일까요?A 배열은 요소 탐색 시 O(1)이 걸리지만, 링크드 리스트는 O(N)이 걸립니다.B 링크드 리스트는 중간에 요소를 삽입/삭제 시 O(1)이 걸리지만, 배열은 O(N)이 걸립니다. 제가 헷갈리는 부분A도 정답이 될 수 있지 않을까요? (A를 선택한 경우 오답으로 처리됨)수업과 수업 자료를 통해 이렇게 이해 했습니다."특정 원소 조회시 배열은 O(1), 링크드 리스트는 O(N)의 시간 복잡도를 가진다" 요소 탐색과 요소 조회는 다른 개념일까요?
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3-A 질문있습니다.
안녕하세요 큰돌님:)해당 문제를 아래와 같이 풀었습니다.http://boj.kr/0f5124b1f6d449dfab81b98ee45ce9d7 clList.push_back(chList[idx]); comb(idx + 1); clList.pop_back(); comb(idx + 1);이런식으로 수업에서 말씀하신 대로 이것은 치킨 집 중에서 m개만 뽑으면 되는 것이니 있고 없고의 경우로 나눠서 조합 코드를 작성했습니다. 저의 코드에서 수정해야 할 방향이 있을까요?
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
7-L 질문드립니다.
안녕하세요 7-L을 재귀적으로 푸는 아이디어가 먼저 떠올라 풀어서 통과했습니다. (인사하거나 안하거나)https://www.acmicpc.net/source/99284102 문득 문제를 풀면서 DP의 경우, 재귀방식의 top-down이 보통 취준 코딩테스트에서 시간복잡도에는 걸리는 케이스도 있을지 궁금합니다.
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3주차 수업 질문있습니다.
안녕하세요 큰돌님:)Q. N과 N개의 자연수가 주어진다. 여기서 몇개의 숫자를 골라 합을 mod11을 했을 때 나오는 가장 큰 수를 구하라입력: 1024 35 38 40 49 59 60 67 83 98출력:101024위 문제의 go함수를 아래와 같이 작성했습니다.int go(int idx, int sum){ if(idx == n) { cnt ++; return sum % 11; } return max(go(idx+1, sum + v[idx]) % 11, go(idx+1, sum) % 11); }이렇게 작성해도 괜찮나요?
-
해결됨김영한의 실전 자바 - 중급 2편
Arrays.sort
[질문 내용]MyUser에서 compareTo를 Override한 뒤Arrays.sort(array);System.out.println(Arrays.toString(array));을 했을때 나이 순으로 정렬이 되는데이게 어떻게 이렇게 되는건지 잘 이해가 되질 않습니다.sort가 내부에서 compareTo를 호출하고array가 MyUser타입이기 때문에 MyUser에서 Override한 compareTo를 호출하는건가요?
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3주차 수업 질문있습니다.
안녕하세요 큰돌님:)제가 지금까지 진행하면서 find와 .find의 사용이 헷갈립니다!! 혹시 어디에는 뭘 사용하는지 정리해주실 수 있을까요?일단 제가 알고 있는 것은 find()는 이터레이터를 반환하고 실패시 해당 컨테이너의 .end()를 반환합니다..find()는 오늘 수업과 "666"문제로 실패 시 string::npos를 반환하는 걸 알았습니다.find는 보통 순차 컨테이너에 사용하는 거 같고 (map, vector, list 등) .find 문자열 그리고 map에서 사용하는 거 같습니다.하지만 이것이 뭔가 정리가 안되어 있는 느낌이라 큰돌님께서 혹시 딱 정리해주실 수 있나요??!!!사실 map일때 key는 .find를 쓰고 쌍을 찾을 때는 find를 쓰고 너무 헷갈립니다. ㅠㅠ
-
미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
원더랜드(프림)
제가 다익스트라 알고리즘이랑 헷갈려서 질문드립니다.프림에서는 아무 정점(ex.1번노드)를 시작 정점으로 잡고 pQ.poll하면 선생님 로직은 poll된 노드는 무조건 최소값이다라고 확정짓고 ch배열에 1로 하시는 거에서 혼동이 옵니다.아직 다른 정점들을 다 방문하지 않았는데 왜 최소값으로 단정짓는지 모르겠습니다.만약 시작 정점을 1로 하고 1에 연결된 다음 노드들이 1이 아닌 다른 노드들에서 오는 값이 최소일 거라는 가능성은 왜 배제된거죠?
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
6-C 질문
안녕하세요 강사님 6-C 질문드립니다.https://www.acmicpc.net/source/99232136문제에는 정확히 M번만 통장에서 돈을 뺀다고 하여 위 코드처럼 분기를 cnt > m | cnt < m | cnt == m으로 나눠서 했을 경우 오답으로 나왔습니다. 그래서 혹시나 cnt > m | 나머지로 나누니 통과했는데, 문제에서는 '정확히 M번' 이라고 명시되어 있던 것 같은데, 이러면 M번보다 작아도 정답으로 처리해버리는 것이 아닌지 질문드립니다.
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-R 질문있습니다.
안녕하세요 큰돌님:)이번 문제의 로직은 좀 다르게 생각해서 푼거 같습니다. 물론 큰돌님의 예제 코드가 더 효율적이라 해당 코드로 다시 연습해보겠습니다!!http://boj.kr/c74792f1a0264fdf9df877f3210cc613저의 경우는 문제에서 입력에서 0번 노드부터 주어진다고 하여 따로 root노드를 저장하지 않고 무조건 0번부터 루트 노드라고 생각하고 풀었습니다.그리고 저는 노드를 탐색해서 지워지는 노드라면 해당 노드와 그 아래 노드들(자식 노드)을 모두 벡터에 넣어 find로 문제를 풀었습니다. 저의 코드는 어떤가요?
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-S 질문있습니다.
안녕하세요 큰돌님:)전반적인 로직은 큰돌님과 같은거 같습니다. http://boj.kr/42404731b4db4e979af5791ec8a400a8 큰돌님의 경우 mx에 최대값을 넣고 dp 행렬에 mx와 같은 값을 꺼내더라고요. 저의 코드는 순수 비교하면서 이전에 큰돌님이 말씀해 주신 prev를 사용해서 구축했습니다. 저의 코드는 어떤가요?그래도 수업에서 알려주시는 걸 사용하려고 하는데...ㅎㅎ
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-Q 질문있습니다.
안녕하세요 큰돌님:)2-Q 문제를 풀었는데 저의 코드가 효율적인지 궁금해서 질문 남깁니다.http://boj.kr/ef8c0d7a6f54429f964d6471f4d387c5저의 코드와 큰돌님의 코드의 로직은 비슷한거 같습니다. 다만 큰돌님의 코드는 녹아야 하는 치즈의 영역을 DFS 즉 go함수에서 벡터에 저장하고, 저는 따로 녹이는 함수를 만들어서 진행했습니다. 저의 코드는 함수에서 DFS이후에 한번 더 2 중 for문으로 탐색을 하는 로직이기 때문에 시간 복잡도가 오르는 단점이 있는 거 같습니다.
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
제가 문제를 이해한 것인지 확인 부탁드립니다.
안녕하세요 제가 문제를 이해한 바가 맞는 것인지 확인 부탁드립니다.해당 문제는 단순히 "1" + "666" 처럼 숫자 뒤에 666을 붙이는 것이 아니라, 1씩 증가하면서 그다음 666이 포함되는 숫자를 찾는 것.1편의 경우 666, 2편의 경우 그다음 666이 들어간 숫자의 가장 최솟값이 1666임, 3(2666), 4(3666), 5(4666), 6(5666)편도 마찬가지. 그 뒤로 7편부터는 6660이 "666" 이 들어간 최솟값이므로 6660, 6661 ... 식으로 올라감. 이렇게 이해하면 되는걸까요?
-
미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
이런 코드는 어떤가요?
import java.util.*; public class Main { public static void main(String[] args){ Scanner in = new Scanner(System.in); solution(in.nextInt(), 1, 1, 0); in.close(); } public static void solution(int target, int start, int value, int prevValue) { if (target >= start) { System.out.print(value + " "); solution(target, start + 1, value + prevValue, value); } } }다음과 같이 풀어보았는데요, 재귀와 메모이제이션을 비슷하게 구현한것 같아서요. 이렇게 작성하면 어떨지 문의드려요!
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
5-F 1202 Priority Queue 관련 질문 드립니다.
안녕하세요 선생님!선생님의 해설은 너무 잘 이해가 갔는데, 고민이 생겨서 질문드려요. Priority Queue의 경우 C++에서는 STL로 제공해주지만, Javascript에서는 제공해주지 않는 걸로 알고 있어서 사용이 머뭇거려지더라고요. (언어 포팅이 힘들 것 같아서요) 만약 자바스크립트 언어로만 풀어야하는 알고리즘 문제가 나온다면 해당 문제는 어떻게 풀어할지 고민하면서, Priority Queue를 최대한 사용하지 않는 방식을 고민하게 돼요. 이런 방향성이 올바른 걸까요? Priority Queue를 사용하지 않으려니 알고리즘을 더 많이 고민하게 되고, 이번 문제의 경우에는 해답이 보이지 않아요. priority queue를 직접 JS에서 클래스로 구현하여 코딩테스트에서 사용하기에는 너무 과한 것 같고, 사용을 안하자니 이런 문제에서 시간초과가 나니까 고민이네요... 어떻게 하는게 좋을까요?
-
미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
bfs 풀이
제 자력으로는 bfs로 풀어봤는데 정답이 뜨긴 했습니다.그리고 선생님이 푸신 기법으로도 제출해보았더니 실행시간은 비슷하더라구요.이 문제에서만은 bfs로 해결해도 되지만 뒤에 있는 문제를 풀기 전에 알아야할 코드이기에 선수학습 코드로 알고 있으면 될까요? 최소 스패닝 트리 문제는 bfs만으로는 풀 수가 없는걸까요...?한 집합에서 노드들이 응축이 되지 않고 계속 연결만 되고 있는 상태에서 마지막으로 입력된(연결된) fb가 이 집합의 배열의 값이 되는건가요? 입력 예시로 보면 (1,2), (2,3), (3,4), (1,5)는 결국 하나의 집합인거잖아요? 여기서 5(fb)가 이 집합의 배열값으로 무조건 고정이 되는건지 궁금합니다.