묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
학습 방법 문의
안녕하세요 이제 큰돌님 강의를 듣기 시작한 취준생입니다.일단 0주차부터 순서대로 강의를 듣고있었는데 0주차의 재귀함수듣고 순열 듣다보니 이 내용이 교안 앞부분에도 없고 뭐지 하면서 일단 들었는데 교안을 쭉 다시 보니 뒤쪽에 있더군요.이 강의를 들으며 학습을 시작하기 전에 C++과 자료구조 내용이 들어있는 알고리즘 교안을 혼자서 모두 익힌 후에 강의를 듣기 시작하면 되는거고 다른 알고리즘_개념교안 이라고 되어있는 자료가 강의들으면서 참조하는 자료인건가요?0주차에 있는 개념 내용들은 교안에 있는 부분중 영상이 필요하다고 생각된 부분을 보충하신거라고 생각하면 될까요?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
7-C 질문입니다.
http://boj.kr/9eeafa902f3d4250b992929f40ba4118예제 입출력은 모두 정상적으로 동작하는데 어떤 경우에 안되는 건지 잘 모르겠습니다.cnt로 이동 횟수를 세서 dp에 기록하는 방식을 사용했습니다.
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
6-G 질문있습니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.아래 코드가 틀렸다고 나오는데 ll r = 1e18 + 4;이 부분 코드를 1e9로 바꿔서 제출하기만 하면 맞다고 나옵니다. 상한선을 저번에 풀었던 드래곤 앤 던전 문제처럼 크게 잡았는데 왜 문제가 생겼는지 모르겠습니다.시간초과가 나온거면 이해가 가는데 왜 틀렸다고 나오는지 이해가 안가네요..#include <bits/stdc++.h> using namespace std; typedef long long ll; ll x, y, z, mid, ret; bool check(ll mid) { ll new_z = (y + mid) * 100 / (x + mid); // 새로운 승률 return new_z > z; // 기존 승률과 비교 } int main() { cin >> x >> y; ll l = 1; ll r = 1e18 + 4; // 최대 범위를 현실적으로 설정 z = y * 100 / x; // 기존 승률 ret = 0; while (l <= r) { mid = (l + r) / 2; if (check(mid)) { // 승률이 증가하는 경우 ret = mid; r = mid - 1; // 더 작은 mid 값을 탐색 } else { // 승률이 증가하지 않는 경우 l = mid + 1; // 더 큰 mid 값을 탐색 } } if (ret == 0) cout << -1; else cout << ret << "\n"; return 0; }
-
해결됨38군데 합격 비법, 2025 코딩테스트 필수 알고리즘
1-4 알고리즘과 친해지기 강의에서 풀이 맞는지 확인 좀 부탁드려요~
위 화면은 강의 내용 일부입니다.그런데 주석에 저렇게 설명하셨는데 아래와 같이 진행되는 거 같아서 질문드립니다.3, 5, 6, 1, 2, 43 -> 3, 5, 6, 1, 2, 45 -> 3, 5, 6, 1, 2, 46 -> 3, 5, 6, 1, 2, 4,...이렇게 진행되는게 아닌건가 싶은데.. 확인 좀 부탁드려요.
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
용어 질문
안녕하세요. 큰돌강사님~순열이나 조합을 재귀함수로 구현할 때변경을 적용한후 DFS진입합니다.DFS를 빠져나오고 나서는 변경사항을 다시 원복시키는 코드 패턴이 보여지는데(즉, push_back() => dfs => pop_back() )이에 대한 알고리즘 용어가 따로 있는지 궁금합니다.
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
6-F 질문드립니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.보여주신 코드와 거의 비슷하게 만든 거 같은데 왜 통과가 안되는지 모르겠습니다.#include <bits/stdc++.h> using namespace std; typedef long long ll; struct A { int t, a, h; }; int n, att; ll mx, ret; A a[123459]; bool check(ll mid) { int cur_a = att; ll ph = mid; for (int i = 0; i < n; i++) { if (a[i].t == 1) { ll cnt = a[i].h / cur_a + (a[i].a % cur_a ? 1 : 0); ph -= (cnt - 1) * a[i].a; if (ph <= 0) return 0; } else if (a[i].t == 2) { cur_a += a[i].a; ph = min(mid, ph + a[i].h); } } return 1; } int main() { cin >> n >> att; for (int i = 0; i < n; i++) { cin >> a[i].t >> a[i].a >> a[i].h; } ll l = 1; ll r = 1e18 + 4; while (l <= r) { ll mid = (l + r) / 2; if (check(mid)) { r = mid - 1; ret = mid; } else { l = mid + 1; } } cout << ret; }
-
해결됨38군데 합격 비법, 2025 코딩테스트 필수 알고리즘
시간 복잡도가 얼마나 걸리는지 확인하는 방법
1. 현재 학습 진도1-10 듣고 있습니다 2. 어려움을 겪는 부분 이 코드에서 for index in range(len(alphabet_occurrence_array)) 는 N이 아니라 상수이기때문에 O(1)라고 말씀해주셨는데 해당 부분이 잘 이해 가지 않습니다.. for문이라도 정해진 숫자의 범위가 돌면 O(n)의 시간 복잡도가 아닌건가요? 만약 이렇게 이해하게 되면 for char in string: 코드에서 string도 배열에 크기에 정해진 숫자만큼만 돌게 되는데.. 헷갈립니다..! 단순히 변수의 for문이면 n 상수의 for문이면 1 이렇게 생각하면 되는건지 궁금합니다!
-
해결됨세계 대회 진출자가 알려주는 코딩테스트 A to Z (with Python)
실전 문제풀이 관련 질문
2022 KAKAO TECH INTERNSHIP 문제 중 코딩테스트 공부 문제에서 실패하는 경우가 있어서 왜 그런지 질문드리려고 합니다. 예시풀이 중 dp풀이랑 비슷하게 풀었는데 다른 점은 저는 dp[alg][cop]을 해당 alg, cop에 도달하기 위해 필요한 최소 비용으로 정의하고 마지막에 최대 alg~+30, co~ +30 중 최소값을 리턴하도록 정의했습니다. 이렇게 하니까 정확성은 다 통과하는데 효율성에서 실패하는 경우가 생기던데 왜그럴까요?def solution(alp, cop, problems): answer = 0 problems += [[0,0,1,0,1], [0,0,0,1,1]] dp = [[1000] * 181 for _ in range(181)] dp[alp][cop] = 0 goal = [alp,cop] for alp_req, cop_req, alp_rwd, cop_rwd, cost in problems: goal[0] = max(goal[0], alp_req) goal[1] = max(goal[1], cop_req) for i in range(alp, 181): for j in range(cop, 181): for alp_req, cop_req, alp_rwd, cop_rwd, cost in problems: if i >= alp_req + alp_rwd and j >= cop_req + cop_rwd: dp[i][j] = min(dp[i][j], dp[i-alp_rwd][j-cop_rwd] + cost) answer = 1000 for row in dp[goal[0]:]: answer = min(answer, min(row[goal[1]:])) return answer
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
알고리즘 교안 164page 오류제보합니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.312 ->321 입니다. 강의 항상 감사합니다~
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
1-K 질문드립니다.
안녕하세요 큰돌님! 문풀 강의를 보기전에 구현을 먼저 해보고 강의를 시청했습니다. 나름대로 문제 풀이 방식(sudo code)를 만들어서 문제를 풀고 잘 풀었다고 생각했는데 큰돌님의 풀이를 보고 비교해보니 난잡한 풀이라고 생각하게 되었어요. 알고리즘을 풀 때 어떻게 생각해야 간결하게 정확한 전략을 세울 수 있을까요...? 문제를 풀 때 큰돌님의 생각루틴과 제 코드에 대한 피드백이 궁금합니다!http://boj.kr/833f44e07f3640228c53b006c8bf0ee5
-
해결됨38군데 합격 비법, 2025 코딩테스트 필수 알고리즘
동일 값 로직 처리
1. 현재 학습 진도1-5 알고리즘과 친해지기(2) 2. 어려움을 겪는 부분# def find_max_occurred_alphabet(string): # alphabet = [0] * 26 # for i in string: # if i.isalpha(): # alphabet[ord(i) - ord('a')] += 1 # # max = alphabet[0] # index = 0 # for i in range(len(alphabet)): # if alphabet[i] > max: # max = alphabet[i] # index = i # # return chr(index+ord('a')) from collections import Counter def find_max_occurred_alphabet(string): string = [char for char in string if char.isalpha()] counter = Counter(string) print(counter) return max(counter, key=counter.get) result = find_max_occurred_alphabet print("정답 = i 현재 풀이 값 =", result("hello my name is dingcodingco")) print("정답 = e 현재 풀이 값 =", result("we love algorithm")) print("정답 = b 현재 풀이 값 =", result("best of best youtube")) 3. 시도해보신 내용 안녕하세요. 첨부한 코드 중 주석 처리한 부분은 문제를 보고 사전에 제가 작성한 코드입니다. 결과는 예상과 동일하게 출력됩니다.그 밑에는 다른 풀이 방법을 찾다가 Counter 클래스를 사용하여 작성한 코드입니다. 본 강의에서는 카운터가 동일한 경우, 기존의 값을 변경하지 않는 방식이라 i가 출력되지만, 해당 방법을 사용하면 입력 순으로 o가 출력됩니다.이 경우 최빈값을 찾아내는 코드는 맞지만, 값이 동일한 경우에 처리하는 로직이 다르기 때문에 발생한다고 이해하면 될까요?답변해주신다면 감사하겠습니다.
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
5-L 질문있습니다.
http://boj.kr/ad36bd7f8ec04337b4e4eb98ed2ecdfc이 코드는 틀린 코드이고http://boj.kr/8494f1ca7ca84fbeaa1cd47409006e9f이 코드는 맞은 코드인데요. 둘의 차이는 combi(0)으로 시작하냐 combi(-1)로 시작하냐입니다.근데 combi(-1)은 for (int i = start + 1; ...) 로 하고combi(0)은for (int i = start; ...) 해서 결국 똑같은 코드 아닌가요? 왜 combi(0)으로 하면 답이 안나오는지 모르겠습니다.
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
4-A 질문 있습니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.안녕하세요 선생님 이 문제를 재귀를 이용해서 풀어봤는데 인덱스를 포함하는 경우에서 temp_v 배열에 인덱스를 포함해서 보내는 경우는 어떻게 하는건가요??(요 부분)// 현재 인덱스를 포함하지 않는 경우 go(idx + 1, p, f, s, v, sum, temp_v); // 현재 인덱스를 포함하는 경우 go(idx + 1, p + a[idx].p, f + a[idx].f, s + a[idx].s, v + a[idx].v, sum + a[idx].c, temp_v);#include <bits/stdc++.h> using namespace std; const int INF = 987654321; int n, mp, mf, ms, mv; int ret = INF; map<int, vector<vector<int>>> ret_v; // 비용별 조합 저장 struct A { int p, f, s, v, c; } a[16]; void go(int idx, int p, int f, int s, int v, int sum, vector<int> temp_v) { // 모든 재료를 확인한 경우 if (idx == n) { // 최소 조건 만족하는지 확인 if (p >= mp && f >= mf && s >= ms && v >= mv) { if (ret > sum) { ret = sum; // 최소 비용 갱신 ret_v[ret].clear(); // 이전 조합 제거 ret_v[ret].push_back(temp_v); // 새로운 조합 저장 } else if (ret == sum) { ret_v[ret].push_back(temp_v); // 같은 비용의 다른 조합 저장 } } return; } // 현재 인덱스를 포함하지 않는 경우 go(idx + 1, p, f, s, v, sum, temp_v); // 현재 인덱스를 포함하는 경우 go(idx + 1, p + a[idx].p, f + a[idx].f, s + a[idx].s, v + a[idx].v, sum + a[idx].c, temp_v); } int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); // 입력 받기 cin >> n >> mp >> mf >> ms >> mv; for (int i = 0; i < n; i++) { cin >> a[i].p >> a[i].f >> a[i].s >> a[i].v >> a[i].c; } // 탐색 시작 go(0, 0, 0, 0, 0, 0, {}); // 결과 처리 if (ret == INF) { cout << -1 << '\n'; // 조건 만족하지 못하는 경우 } else { sort(ret_v[ret].begin(), ret_v[ret].end()); // 사전순 정렬 cout << ret << '\n'; // 최소 비용 출력 for (int idx : ret_v[ret][0]) { // 첫 번째 조합 출력 cout << idx << " "; } cout << '\n'; } return 0; }
-
해결됨김영한의 실전 자바 - 중급 2편
문제와 풀이3 stack - 히스토리 에서 ArryDeque 질문
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요. stack 2번째, 문제 풀이 를 보면서 궁금증이 생겨서 질문을 남깁니다.문제 풀이를 듣던 도중에 영한 님이 history를 만들 때, ArryDeque를 이용해서 만들었던 것을 볼 수 있었습니다. 그러다가 계속 듣다 보니까 갑자기 이런 생각이 들더라고요.(어떤 분이 '자바 성능 비교 표' 올린 영향도 있습니다.)'앞으로만 추가하니 LinkedList가 더 빠르지 않을까?' 라는 생각 이요. 그런데 ArrayDeque를 왜 사용했을까? 생각 해보니 '앞으로만 추가 하지만, 여러 가지 이용할게 더 많아서 ArrayDeque 를 사용 했다.' 인데 이것도 추측이라서 정확하지 않네요.그래서 LinkedList 대신 ArryDeque를 사용한 이유를 자세히 알고 싶습니다.답변 부탁 드립니다.
-
미해결김영한의 실전 자바 - 중급 2편
안녕하세요. 문의드립니다.
직접 구현하는 Set1 - MyHashSetV1 강의중public class MyHashSetV1 { static final int DEFAULT_INITIAL_CAPACITY = 16; LinkedList<Integer>[] buckets; private int size = 0; private int capacity = DEFAULT_INITIAL_CAPACITY; public MyHashSetV1() { buckets = new LinkedList[capacity]; for (int i = 0; i < capacity; i++) { buckets[i] = new LinkedList<>(); } }이렇게 생성자에 객체를 생성하는데클래스 필드에 객체를 생성하지 않고생성자 안에서 생성하는 이유가 무엇인지 궁금해서 문의드립니다.
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-O 4949 코드 질문
http://boj.kr/5a9e690ac2f24bc3bdd728d4be9a82e9큰돌님 제가 작성한 코드로는 . (예제 입력1 의 7번 "공백.")이걸 입력하면 .이 출력 되면서 .이 왜 출력되는지 모르겠고 어디 부분이 잘못된 것인지도 모르겠습니다.코드가 잘못된 부분 조언 부탁드립니다 !
-
미해결김영한의 실전 자바 - 중급 2편
직접 구현한 리스트의 성능 비교 강의중 질문입니다.
안녕하세요. 강의를 보면서 성능 비교에 중 영상에 나오는 기대값과 실제 나오는 기대값이 달라서 코드중에 문제가 있는지문의드립니다. 조회 부분에서 array리스트 기대값과 linked리스트 기대값의 효율이 영상과는 차이가 있어서 질문드립니다.
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
해당 문제를 set을 사용해서 풀었는데 이분탐색보다 속도가 느린 이유가 궁금합니다
std::set은 레드블렉 트리로 구현하여 삽입, 삭제, 검색 모두 O(logN)인걸로 알고있습니다. 이분 탐색도 시간 복잡도가 O(logN)인데 왜 std::set을 사용하면 더 느린지 궁금합니다.아래는 풀이 소스코드입니다.#include <bits/stdc++.h> using namespace std; int32_t t, n, m, tmp; set<int32_t> s; int main() { ios::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr); cin >> t; while (t--) { cin >> n; s.clear(); for (int32_t i = 0; i < n; ++i) { cin >> tmp; s.emplace(tmp); } cin >> m; for (int32_t i = 0; i < m; ++i) { cin >> tmp; if (s.contains(tmp)) { cout << "1\n"; } else { cout << "0\n"; } } } return 0; }
-
미해결코딩테스트 [ ALL IN ONE ]
notion 초대 주세요
안녕하세요 강의 수강해서 보고 있는데 노션 워크스페이스 공유가 안오네요제 이메일은 wowls1227@icloud.com 입니다.
-
해결됨2주만에 통과하는 알고리즘 코딩테스트 (2024년)
백준 22988 문제 질문
용량(x)이 13이고 병에 들어있는 용량(arr[e])이 13일 때,즉 arr[e] == x: 일 때 cnt += 1 하고 e 부분만 빼기 1을 해주는 부분에서 이해가 되지 않았습니다.문제에서 "두 개를 반납해야 새로운 용량을 준다고 했는데" 선생님께서는 최대용량(13)일 때 하나만 반납했기 때문에 이해가 잘안되네요..이 부분 한번 설명 해주실 수 있으실까요?