묻고 답해요
169만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨시니어 면접관이 알려주는 개발자 취업과 이직 한방에 해결하기 [이론편]
기술 스택에 대한 질문
안녕하세요 신입 입장에서 채용공고를 보다 보면 사용하는 기술에 대해 나열되어 있는 것을 볼 수 있는데요. 만약에 지원을 하려면 해당 기술 스택에 대해 자세히 다 알고 있어야 될까요.?
-
미해결입문자를 위한 코딩테스트 핵심(이론과 문제풀이) [Python]
두수의합 Counter 사용
안녕하세요강사님 잘 보고 있습니다!!아래와 같이 해도 괜찮을까요?감사합니다~!from collections import Counter def solution(nums, target): answer = [0]*2 dict = Counter(sorted(nums)) for i in dict: if dict[target-i] == 1: return sorted([i, target-i]) return answer
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
6-D lower_bound 질문있습니다 :)
안녕하세요 선생님 🙂 lower_bound와 관련하여 궁금한 것이 있어서 질문드립니다. 해당 문제는 lower_bound를 이용하여 A 안에 있는 요소들 중 하나를 골라서 B에 있는 요소보다 큰 경우를 누적하여 더한 후에 출력하는 문제였습니다. 문제의 결과 값에서 lower_bound의 역할을 유추해보면, 1, 2번째 파라미터에 넣는 배열의 범위에서 3번째 파라미터에 있는 요소보다 작은 요소의 개수를 출력해주는 함수라는 것을 알 수 있었습니다. 반대로 upper_bound는 작은 요소가 아닌 큰 요소의 개수를 출력해주는 함수라는 것을 알게 되었습니다. 그렇다면, 같은 요소의 개수를 출력해주는 방법도 있을 거라고 생각하는데요, 구글을 아무리 뒤져봐도 키워드 선택을 잘못해서 그러는건지.. 관련 자료를 찾을 수 없었습니다. 혹시 이런 함수가 따로 있다면 알려주시면 도움이 많이 될 것 같습니다 :) lower_bound가 같은 경우도 처리해준다는 자료를 보긴 했는데요, 이 자료에 신뢰성이 있으려면 해당 문제에서 A와 B의 요소가 같아도 A가 B를 잡아먹을 수 있다는 조건을 만족해야 할 것 같습니다. 아래는 제가 보았던 자료의 링크입니다.https://chanhuiseok.github.io/posts/algo-55/
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
선형탐색 -> "틀렸습니다" 가 나옵니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요 선생님. 선형탐색으로 하면 어떻게 되는지 궁금하여 백준에 해당 코드를 제출하여보았는데 예상과 다르게 "틀렸습니다" 가 나옵니다. 선형탐색은 시간복잡도가 더 클 뿐 틀린것은 아니기에 "시간초과" 가 나와야 되는거 아닌가요??#include<bits/stdc++.h> using namespace std; int n; int m; int a[300002]; int ret = 987654321; bool search(int mid) { int t_ret = 0; for (int j = 0; j < m; j++) { t_ret += a[j] / mid; if (a[j] % mid) t_ret++; } return t_ret <= n; } int main() { cin >> n >> m; int left = 1, right = -1; for (int i = 0; i < m; i++) { cin >> a[i]; right = max(right, a[i]); } ret = right; for (int i = left; i <= right; i++) { if (search(i)) { ret = min(ret, i); break; } } cout << ret; return 0; }
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
5 - S 실전 관련 질문 드립니다..!
풀긴 했는데 메모리랑 시간 사용량이 어마어마 해서요..실전이 얼마 안남아서 실전에서도 이렇게 풀어도 되나 싶어서 여쭤봅니다... 제가 파악한 큰돌님과 저의 코드 차이점은저는 연산 기호를 사용할 수 있냐는 기준을카운팅 배열을 쓰고 원복하고 했던 거랑수식들을 계산할 때, 스택에 넣고 계산하는 방식을 쓴 게 가장 큰 차이인 것 같습니다.그리고 실제 문제로 이런 문제가 나온다면 몇 분 안에 풀어야 될지도 궁금합니다..! 저는 40~50분 안에 풀면 안정권이라 생각했는데 큰돌님 의견이 궁금하네욤!http://boj.kr/229b1729870841dfa19aaa13c1760073
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
5-S 질문드립니다 :)
안녕하세요 선생님 🙂 다시 풀다가 이해가 되지 않는 부분이 있어서 질문드립니다. 재귀를 할 때 함수 파라미터에 sum - 1, minus - 1이 아닌 --sum, --minus를 넣을 때 틀리는 이유가 궁금합니다.위의 아이디어를 떠올린 계기는, -1연산을 습관적으로 sum--와 같은 후위연산자를 사용해서 풀이했었습니다. 결과가 틀렸을 때, '후위연산자여서 함수가 재귀될 때 바로 -1이 되지 않아서 그런거구나'라는 생각이 들어서 --sum과 같은 전위연산자를 사용했는데도 틀리더라구요.. 조언주시면 정말 감사하겠습니다!! ^^ http://boj.kr/2a8523783dfd497a96fc3229f86e0218
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3-Q 질문 있습니다.!
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.http://boj.kr/9d9e543bdcc34d91b61422b4f11385ae안녕하세요 선생님 제가 작성한 코드입니다. 아무리 생각해도 이코드도 맞아야 되는거 같은데 왜 틀렸는지 도저히 모르겠네요... 어떤 부분이 틀렸는지 궁금합니다!
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
그리디, 라인스위핑 질문있습니다 :)
안녕하세요 선생님 🙂 그리디랑 라인스위핑 문제를 다시 풀어보고있는데요, 문제마다 앞에서부터 정렬할지, 뒤에서부터 정렬할지 정확하게 판단이 서지를 않고 있습니다. 조언해주신다면 정말 도움이 많이 될 것 같습니다..!! 항상 감사합니다 :)
-
미해결코딩테스트 [ ALL IN ONE ]
노션 공유 안 됨
안녕하세요. 구글 폼으로 10월 14일 화요일 저녁 9시쯤, 10월 16일 오전 9시 좀 넘어서 구글 폼으로 이메일 2번 보냈는데 아직 노션 공유가 안됩니다! 이메일은 아이디@gmail.com으로 해놨습니다. 확인 부탁드리겠습니다!
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-T 질문있습니다!
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.안녕하세요 선생님, 2-T 접근방법에 대해 질문있습니다!문제를 읽고 우선 queue나 stack으로 풀어야겠다는 생각은 들었는데, 해당 문제가 우측으로 더 큰항목이 있는지 비교(input과 특정 항목을 비교)하는 문제이기 때문에, queue로 구현하면 queue의 front에 가장 큰 값이 들어올 경우, 이후 항목에서 오큰수를 부여할 수 있는 수열들이 들어오더라도 queue를 pop하지 못하고, pop할 수 있는 항목들을 queue를 순회해서 찾는다고 하면 시간복잡도가 O(N^2)으로 커져버리니까 스택을 사용해야겠다! 라는 사고에 따라 스택을 사용하기로 결정하면 되나요?또 한가지 질문이 있습니다..!! 정답 배열로 정수를 출력하는 문제라고 가정하면, int배열을 사용하여 푸는 것과 벡터<int> v 에 푸시하여 사용하는 것 어떤 것이 유리한지 궁금합니다!
-
미해결김영한의 실전 자바 - 중급 2편
List 생성할때
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요. 안녕하세요!문제와 풀이를 해보다 문득 궁금해졌는데,혹시 ArrayList 생성할때List<Integer> list = new ArrayList<>(); ArrayList<Integer> list = new ArrayList<>();두개의 차이가 있을까요 ..?
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
tsp함수에서 (visited | (1 << i))
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.안녕하세요. 강의잘 듣고 있습니다. 다름이 아니라 코드 중에 잘 이해가 가지 않는 부분이 있어서 질문드립니다.ret = min(ret, tsmp(i, visited | (1 << i)) + dist[here][i]);에서 visited | (1 << i)는 i를 기준으로 탐색하지 않는 곳을 확인 하기 위해서 필요한 코드인가요?ex) tsp(0, 1)이고 i = 1일때, ret = min(최대, tsp(1, 1 | (1 << 1), + dist[0][1])이 됩니다여기서 tsp(1, 1 | (1 << 1)은 0, 1번째를 탐색했고 다시 1번째를 기준으로 2, 3을 탐색하는 것일까요?0, 1을 탐색하는 이유는 1 | (1 << 1) -> 0001 | 0010 -> 0011이고 이는 0번째와 1번째를 확인했음을 의미하는 거 맞을까요?그리고 2번을 기준으로 나머지 탐색을 하지 않은 도시(3, 4)를 탐색하는 것이구요.위의 내용이 맞다면, 해당 코드에 대한 이해는 했는데 솔직히 말하면 제가 visited | (1 << i)라는 코드를 떠올리지는 못할 것 같습니다... 어떻게 하면 떠올릴 수 있을까요? 아직은 문제풀이를 많이 하지 않았으니까 그냥 외우면 되는 걸까요? ㅠㅠ
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
5-H 질문있습니다 :)
안녕하세요 선생님 🙂 다시 풀다보니 아래와 같은 풀이가 나왔는데요, 테스트케이스는 전부 올바른데 어디가 잘못된 것인지 모르겠어서 질문드립니다 ㅠㅠ 완전탐색을 이용하였습니다.http://boj.kr/4da9822932e3463aad4614f9fd3ab7db
-
해결됨카카오 코테 6주 합격! 실전 파이썬 코딩테스트
그룹 단어 체커 - 백준 1316번 관련 문의드립니다.
N = int(input()) words = [ input() for _ in range(N) ] ans = 0 for word in words: prev = word[0] before = [] isGroup = True for i in range(len(word)): if word[i] != prev: before.append(prev) if word[i] in before: isGroup = False break if isGroup: print(word) ans += 1 print(ans이게 수업으로 제공하셨던 정답 코드인데, 오답 코드가 아닌가 해서 여쭤봅니다. prev 변수가 갱신이 되지않고 계속해서 그룹여부를 체크하는데, 이 부분이 잘못 된 것이 아닌가 싶습니다.예를 들어 abcb라는 문자열의 경우에서도 그룹단어가 아니어야하는데 그룹단어로 검출되는 로직인 것 같습니다. 제가 그룹단어에 대해 잘못 이해한 걸까요?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-Q 시간초과 질문있습니다!
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.안녕하세요! 이번에 2-Q문제를 푸는데, 로직과 출력은 문제없는것 같은데 시간 초과가 나와서 어느 부분때문에 시간 초과가 나온지 너무 궁금합니다. http://boj.kr/0d1b70e1393b4e239c54738af690e44e항상 좋은 강의 감사합니다!
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3-J 주난의 난
http://boj.kr/33a1d8de2da14b3490eaa1b3effe36c0안녕하세요 강사님,이런식으로 작성해보았는데 코드 리뷰 부탁드려도 될까요??
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3-p 질문 있습니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.안녕하세요 선생님 저도 선생님의 생각처럼 코드를 이렇게 작성하면 되겠구나 라는 생각을 했습니다. 하지만 결국 코드가 생각처럼 구현 되지 않았습니다.이코드에서 제 생각이 뭐가 틀렸고 어떤 부분이 미숙했던 걸까요? ㅜㅜ코드 사고 과정1. 전체 맵에서 조합으로 씨앗을 심고 visited 처리2. 3개 의visited 에서 위 아래 로 꽃이 펴지기3. 그중에서 합이 제일 작은거 출력 하기#include <bits/stdc++.h> using namespace std; bool visited[101][101]; int n,a[101][101], ret=987654321; const int dy[] = {-1, 0 , 1, 0}; const int dx[] = {0 , 1, 0 , -1}; vector<pair<int, int>> v; int solve(){ int sum = 0; for(int i =1; i < n; i++){ for(int j =1; j < n; j++){ if(visited[i][j]){ sum += a[i][j]; for(int i = 0; i < 4; i++){ int ny = i + dy[i]; int nx = j + dx[i]; if(ny < 0 || nx < 0 || ny >= n || nx >= n || visited[ny][nx]) { return 987654321; }; visited[ny][nx] = 1; sum += a[ny][nx]; } } } } return sum; } int main(){ ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL); cin >> n; for(int i = 0; i < n; i++){ for(int j = 0; j < n; j++){ cin >> a[i][j]; if(i >=1 && j >=1) v.push_back({i,j}); } } for(int i =1; i < n; i++){ for(int j =1; j < i; j++){ for(int k =1; k <j; k++){ visited[v[i].first][v[i].second] = 1; visited[v[j].first][v[j].second] = 1; visited[v[k].first][v[k].second] = 1; ret = min(ret, solve()); memset(visited, 0,sizeof(visited)); // visited[v[i].first][v[i].second] = 0; // visited[v[j].first][v[j].second] = 0; // visited[v[k].first][v[k].second] = 0; } } } cout << ret << "\n"; return 0; }
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
4-F 1062번 문제 답안코드에서 이해가 가지 않는 부분이 있습니다.
int go(int index, int k, int mask) { if (k < 0) return 0; if (index == 26) return count(mask); int ret = go(index+1, k-1, mask | (1 << index)); if (index != 'a'-'a' && index != 'n'-'a' && index != 't'-'a' && index != 'i'-'a' && index != 'c'-'a') { ret = max(ret, go(index+1, k, mask)); } return ret; }답안에서 go 함수의 기저사례 처리 부분이 이해가 가지 않습니다.if (k < 0) return 0; if (index == 26) return count(mask); 이렇게 k < 0 일때는 0을 리턴해주고 index==26일때 읽을 수 있는 단어갯수를 리턴해주고 있는데요,문제의 조건이 K개의 글자를 가르쳤을때 읽을 수 있는 단어의 갯수의 최대값을 구하는 것인데위와 같이 index==26 일때 count(mask)를 리턴해주면 k개를 모두 고르지 않은, 예를 들어 k-2만을 고른, 상태일때 읽을 수 있는 단어를 리턴해주게 되지 않나요? 저는 그래서 if(k==0) return count(mask); if(index == 26 && k > 0 ) return 0;이렇게 k==0일때 (즉, k가지를 모두 골랐을때) count(mask)로 읽을 수 있는 단어의 갯수를 리턴해주고index가 끝까지 갔음에도 불구하고 k가 아직 0이 안되었을 경우에는 k개의 글자를 가르치지 못한경우이므로 0을 리턴하게 해주었는데이렇게 하니 틀렸다고 나오네요. 왜 이렇게 하면 안되는것인지, 그리고 왜 큰돌님께서 작성해주신 답안대로 해야되는지 이해가 가지 않아서 이렇게 질문드립니다. 답변해주시면 감사하겠습니다
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3-K 시간초과 질문입니다
영상 보기전에 문제를 먼저 풀어보았는데로직 arr에 L 하나! 좌표를 p_y, p_x 담기반복 {한번 반복될때 마다 ans++del_y, del_x 두 queue를 만들고2중 for문 돌면서 빙산깍습니다 만약 빙산"X" 라면 del_y, del_x 에 push 합니다2중 for문이 끝나면 del_y, del_x에 있는 좌표들을 "." 로 수정합니다맵 bfs 돌면서 L 2개가 만날수 있는지 체크합니다방문배열 초기화!만날수 있다면 ans 변수 출력 }http://boj.kr/e5a6ee722f5b467ea793402242eb25f02% 시간초과가 뜨는데 어떻게 최적화를 해야할까요..
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3-I 응용 질문있습니다 :)
안녕하세요 선생님 🙂 이 문제에 숨바꼭질 2번의 가장 빠른 시간으로 동생을 찾는 방법의 수와 숨바꼭질 4번의 이동 경로를 출력하는 방법을 넣어보고 싶어서 응용을 해봤습니다. http://boj.kr/140dd82426b947a59d51672a9bda4d0a 가장 빠른 시간으로 동생을 찾는 방법의 수를 출력하는 로직이 올바르게 짜여있는 것인지 궁금합니다. int prv[2][500004]; for (int i = K; i != N; i = prv[cnt%2][i]) { vec.push_back(i); //cnt--; } vec.push_back(N); reverse(vec.begin(), vec.end()); for (const auto& v : vec) { cout << v << " "; }prv배열을 2차원으로 했을 때, 1, 10을 입력하면 올바른 값이 나오지만 5, 17과 17, 5는 출력 자체가 되지 않습니다. prv배열을 1차원으로 했을 때는 5, 17과 17, 5는 출력이 되지만(5, 17만 올바른 값 출력) 1, 10은 출력 자체가 되지 않습니다. 혹시나 해서 for문에 cnt--를 넣어봤지만, 제대로 출력되던 1, 10조차 출력 자체가 되지 않았습니다. 이유와 해결방법이 궁금합니다.17 -> 16, 15, 14, 15 5 -> 6, 8, 11, 15위의 경우처럼 중복되는 경로가 있는 경우는 17 16 15까지만 출력이 됩니다. 14가 출력되지 않는 이유는 16 뒤에 출력되는 15가 첫번째 방문하는 15가 아닌 마지막 15를 방문해서 그런걸로 이해했는데 제대로 이해한게 맞을까요?