묻고 답해요
167만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
특정 단어를 기준으로 split으로 자르고 join으로 다시 붙여서 풀었습니다
감사합니다.function solution(question) { return question.split("A").join("#"); } console.log(solution("BANANA")); console.log(solution("AATTNK")); console.log(solution("AJUERHNHANLDJFMNKAMMJKDJKFAMMKA"));
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
전역변수를 사용하지 않은 백트랙킹 코드 질문
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.안녕하세요 큰돌님 강의잘 보고 있습니다. 저는 다음과 같이 코드를 작성을 했는데 전역변수를 사용하지 않은 코드에서 백트래킹조건을 어디에 적어주어야 하는지 알 수 없어서 질문드립니다. 그리고 제가 재귀함수에 익숙치 않은 상태인데 재귀함수를 학습하는 방법에 대해서도 알려주실 수 있으신가요? 제가 부족해서 교안이나 강의에 해주신 설명으로는 이해하는데 어려움을 겪고 있습니다. 답변 감사합니다.int go(int idx, int sum, int mx, int n, int * a) { if (idx == n) { cnt++; return mx; } int with_item = go(idx + 1, sum + a[idx], max(mx, sum % 11), n, a); int without_item = go(idx + 1, sum, mx, n, a); return max(with_item, without_item); } int main() { ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); int n = 10; int a[] = {24, 35, 38, 40, 49, 59, 60, 67, 83, 98}; cout << go(0, 0, 0, n, a) << "\n"; cout << cnt; return 0; }
-
해결됨[파이썬/Python] 문과생도 이해하는 DFS 알고리즘! - 입문편
선생님! 바이러스 문제 코드 질문있어요오
선생님 안녕하세요 유튜브에서 보고 오늘 처음 수강했는데 너무 귀에 잘 들어와서 재미있어요 bfs 강의도 올려주세용!다름이 아니고 바이러스 코드 중 이해가 안 되는 부분이 있어 질문 남깁니다!def dfs(idx): global visited, graph, answer visited[idx]= True answer += 1 for i in range(1, n+1): if not visited[i] and graph[idx][i]: dfs(i)바이러스 코드에서 idx가 3이 되고 answer가 3이 되는 부분 까지는 이해를 했는데 idx가 3일 때 for문을 돌면 2는 이미 방문했기 때문에 if문은 7까지 true가 되지 못하고 종료되는 것 아닌가요? 다시 idx=2로 돌아가서 5를 방문하게 되고 1에서 6을 방문하게 되는 부분은 코드 어느 부분에서 이루어지는 건지 잘 모르겠어요ㅜㅜ
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-p14502 vector&lt;pair&lt;int,int&gt;&gt;의 조합을 뽑아내는 방법은 없을까요?
큰돌님 안녕하십니까?모범답안에서는 3중 포문을 사용해주셨는데재귀로 pair<int,int>를 Wall List를 조합으로 뽑아내서 풀이하고 싶습니다. 아이디어는vector<pair<int,int>> v; v.push_back(1개 wall의 [y][x]);void combi(int start, vector<pair<int,int>> b){ ... }로 3개를 뽑아내는 방법인데 다른 코드를 참고해도 위 아이디어는 잘 없길래 질문 드립니다.모범 코드를 제시해 주실 수 있으실까요?미리 답변 감사합니다.수강자 올림
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
히든퀘스트 10844 쉬운계단수문제 질문
안녕하세요 큰돌선생님 히든퀘스트 백준 10844 쉬운계단수 문제를 바텀업 방식으로 풀었습니다. http://boj.kr/1674b847244b43b2b1d5538557a76865로직에서 틀린부분이 없는것 같은데 바로 틀렸다고 나오는데 혹시 어느 부분이 잘못된것일까요?0과 9일때의 값을 조건문으로 처리하지 않기 위해 양쪽 인덱스를 하나씩 늘리고 0을 넣은 로직입니다.
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
7-B 4:44 행, 열로 탐색하는거 포인트라 하셨는데
다른문제에서는 다르게 탐색순서를 할 수 있으니까 그런건가요
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-T 질문드립니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요 큰돌님 강의 잘보고 있습니다.저는 이 문제를 아래와 같은 코드로 해결이 가능하다고 생각했는데 현재 출력조차 되지 않는 상황이라 질문드립니다. 현재 코드에서 아무것도 출력이 되지 않는 이유가 무엇인지 궁금합니다!#include <bits/stdc++.h> using namespace std; int n, a; stack<pair<int,int>> s; vector<int> v; int main() { ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); cin >> n; for (int i = 0; i < n; i++) { cin >> a; while (s.size() && s.top().second < a) { auto p = s.top(); v[p.first] = a; s.pop(); } s.push({i, a}); } while (s.size()) { auto p = s.top(); v[p.first] = -1; s.pop(); } for (int e : v) { cout << e << " "; } return 0; }
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
4-B 질문있습니다.
이 문제를 보고 큐브 같다는 생각이 들었습니다. 행을 뒤집을 수도, 열을 뒤집을 수도 있으니 결론적으로 0행과 0열을 뒤집으면 0행0열의 원소는 그대로지만 나머지 0행과 0열의 원소는 뒤집은 결과를 갖게 되니까요.111111 111 이 100011011 처럼 된다는 말입니다. 근데 저는 이 문제를 보고 도저히 행 또는 열을 선택해서 완전탐색을 하면 정답을 구할 수 있다. 는 사실을 혼자서 생각하지 못했습니다. 이유는 아까 예시와 같이 행과 열을 순차적으로 조작하면 개별요소도 수정할 수 있지 않을까? 하는 생각이 들어서 였습니다. 과연 코테에서 이런 아이디어를 떠올릴 수 있을지.. 자신이 없습니다.. 혹시 이 아이디어를 어떻게 생각하셨는지 궁금합니다.감사합니다.
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
unique는 이터레이터를 반환한다.
안녕하세요 큰돌님 강의에서 11:19 쯤 설명 관련해서 교안에는 그다음 이터레이터를 반환한다고 하는데 제가 이해하기로 그저 나머지 요소가 시작되는 인덱스를 반환하는 것으로 이해했는데요 왜 이터레이터가 반복된다고 하는건가요? js로 언어를 시작해서 포인터 이런 개념이 부족한데 그런 개념이 들어간건가요? 강의 1주차인데 아직 어려운것은 없지만 C++ 확실히 다르긴하네요ㅋㅋ 좋은 강의 해주셔서 감사합니다.
-
해결됨자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
Integer.MIN_VALUE
max = Integer.MIN_VALUE로 초기화해주는 이유가 따로 있나요??
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
1-O 출력 관련한 질문 입니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요. http://boj.kr/4dae74666d35462094e6f4f319f86ac0 해당 소스를 가지고 했는데 문제 조건 N % 2 !=0 && N % 5 != 0 에 해당하는 값을 입력할 때는 아무런 출력이 되지 않고 해당 조건을 벗어나는 값을 입력할 때만 값이 출력됩니다. 아마 제가 모르는 부분이 있거나 교안에 제가 잊은 부분이 있는거 같은데 혹시 알려주실 수 있으실까요?
-
해결됨코딩테스트 [ ALL IN ONE ]
복습 방법
현재 다익스트라와 관련된 강의까지 들어 놓은 상태이고 그 뒤는 아직 안 올라와서 나중에 들으려고 하는데 복습 겸 앞서 배운 부분을 공부해보려고 합니다 근데 어떤 걸 우선순위로 두고 공부해야 할지 잘 모르겠습니다. 그냥 백준에서 dfs bfs graph 풀면 될지 아니면 list queue 등 기초를 풀어보고 심화로 넘어가는게 좋을지 모르겠습니다 또한 알고리즘도 자주 나오는게 있고 덜 나오는게 있을텐데 뭘 먼저 풀어야할지 모르겠습니다우선순위가 높은 알고리즘을 알려주시면 감사하겠습니다
-
미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
그래프 최단거리(BFS 질문)
for(int i=0; i<=n; i++){ //0번은 사용하지 않아 1로 했더니 에러가 나고 0으로 바뀌니 에러가 나지 않았다. 왜? graph.add(new ArrayList<Integer>()); } 질문. 0번은 사용하지 않아1로 했더니 에러가 나고0으로 바뀌니 에러가 나지 않았습니다. 왜 그런걸까요? 에러 종류Exception in thread "main" java.lang.IndexOutOfBoundsException: Index 6 out of bounds for length 6
-
해결됨[파이썬/Python] 문과생도 이해하는 DFS 알고리즘! - 입문편
질문있습니다!
선생님 안녕하세요유형2로 들어와서 이제 visited를 2차원 배열로 만들기 시작하고 나서부터 계속 제가 헷갈리는게 선생님은 dfs 배열에 인자로 x,y가 아니고 y,x로 넘기시고 또 배열도 map[y][x]로 접근하시는 이유가 있으실까요? 보통 가로축을 x로 놓고 세로축을 y로 놓는 것으로 알고 있는데혼자 고민해 봤을때는 지금 문제들이 계속 가로 세로 길이가 다르더라구요 그래서 또 2차원 배열로 생각해보면 가로축이 column이 되고 세로축이 row가 되어서 그런건가 싶기도 하고.. 유형 2 파트와서 계속 이 부분이 헷갈리네요두서없는 질문이지만 궁금해서 여쭤봅니다!감사합니다
-
미해결2주만에 통과하는 알고리즘 코딩테스트 (2024년)
완전탐색 숫자야구 2503
c++로 수강중인 학생입니다.. 백준 숫자야구 문제 c++로 풀어주실 수는 없을까요..? 몇번 구현해보다가 멘탈이 터져버렸습니다.. 우선은#include <iostream> using namespace std; int main() { ios::sync_with_stdio(0); cin.tie(0); int n; cin >> n; int numbers[1000]; int strikes[1000]; int balls[1000]; for (int i = 0; i < n; i++) { cin >> numbers[i] >> strikes[i] >> balls[i]; } int answer = 0; for (int a = 1; a < 10; a++) { for (int b = 1; b < 10; b++) { for (int c = 1; c < 10; c++) { int counter = 0; if (a == b || b == c || c == a) { continue; } for (int i = 0; i < n; i++) { int check = numbers[i]; int strike = strikes[i]; int ball = balls[i]; int strike_count = 0; int ball_count = 0; int check1 = check / 100; int check2 = (check / 10) % 10; int check3 = check % 10; // 스트라이크 계산 if (a == check1) { strike_count++; } if (b == check2) { strike_count++; } if (c == check3) { strike_count++; } // 볼 계산 if (a == check2 || a == check3) { ball_count++; } if (b == check1 || b == check3) { ball_count++; } if (c == check1 || c == check2) { ball_count++; } // 매칭 여부 확인 if (strike != strike_count || ball != ball_count) { break; } counter++; } if (counter == n) { answer++; } } } } cout << answer << '\n'; return 0; } 이렇게 풀기는 했는데 선생님이 가르쳐주신 방향하고는 살짝 다른 거 같습니다.
-
해결됨2주만에 통과하는 알고리즘 코딩테스트 (2024년)
5강 재귀(경우의 수) 4번 문제 질문드립니다.
안녕하세요, 선생님의 강의를 잘 듣고 있는 1인 입니다.1) 강의를 듣고 4번 문제를 아래와 같이 풀었는데요, 정답이 왜 0이 나오는건지, 어느 부분이 잘못된 건지 모르겠어서 질문드립니다.(5강에서 적으실때 line 18의 idx에 1을 더해주지 않으셨는데 이 부분은 +1을 빠트린게 맞으신거죠?)2)또한, 어떤 경우에 global answer를 써주는지도 한번 다루어주셨으면 좋겠습니다.3) line 8의 weight > B가 아닌 weight >= B가 되는게 더 맞는게 아닌지 질문드립니다. weight == B인 경우에 한 번 더 반복문을 돌면 이미 초과된 가방에 새로운 물건의 value를 추가해서 더하게 되는 것처럼 보이는데요, 혹시 제가 잘못 생각하고 있을까요?
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
1-A 결과는 정확히 나오는데 왜 틀렸다고 하는건지 모르겠습니다
http://boj.kr/59d6674b61764f13b14b7608522239a5 9개 중에 틀린 2개를 뽑고 인덱스에 해당하는 vector요소를 erase로 지우고자 했는데 프로그램을 돌리면 값을 정확하게 나오는데 왜 틀렸다고 하는지 모르겠습니다
-
미해결it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비
75. 최대 수입 스케쥴 sort
sort(T.begin(), T.end());하는 이유가 궁금합니다. 정렬 안해도 if(T[j].when<i) break;에서 걸러질텐데 앞에서 소팅하는 이유가 있는건가요?
-
미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
제 실력으로 최대한 머리 짜내서 혼자 풀어 보았습니다. 너무 허접 할까요?
<script> function solution(arr) { const initialValue = 0; const result = arr.reduce((prev, current) => prev + current, initialValue); const overSum = result - 100; const pickNum = []; for (let i = 0; i < arr.length; i++) { for (let j = 0; j < arr.length; j++) { if (arr[i] === arr[j]) continue; if (arr[i] + arr[j] === overSum) pickNum.push(arr[i]); } } return arr.filter((val) => val !== pickNum[pickNum.length - 2] && val !== pickNum[pickNum.length - 1] ); } let arr = [20, 7, 23, 19, 10, 15, 25, 8, 13]; //let arr = [25, 7, 23, 19, 10, 55, 20, 8, 13]; //let arr = [33, 9, 23, 17, 10, 55, 20, 8, 13]; //let arr = [13, 9, 61, 17, 11, 22, 20, 8, 70]; console.log(solution(arr)); </script> 코드 설명reduce 함수로 먼저 모든 9명의 난쟁이 녀석들 합을 구합니다.난쟁이 합은 총 100이니까 9명의 난쟁이 합 - 100을 합니다. ( 100보다 작을순 없으니까)범인은 2명이니까 중첩 for문을 돌려서 두명의 합이 2번의 값과 같은 녀석을 구합니다. pickNum 배열에 첫번째 녀석과 두번째 녀석이 담깁니다.filter함수를 이용해서 첫번째 가짜 난쟁이 값과 두번째 가짜 난쟁이 값에 해당하지 않은 녀석들로 진짜 난쟁이들 배열을 구성합니다여러가지 테스트 케이스를 만들어서 해보았는데, 진짜 난쟁이들 잘 찾습니다
-
해결됨[파이썬/Python] 문과생도 이해하는 DFS 알고리즘! - 입문편
2644 촌수계산 문제에 관한 질문
선생님 안녕하세요!강의 너무 잘 듣고 있습니다!제가 2644번 문제를 혼자 아래 코드로 풀어보았는데저는 선생님께서 count변수를 dfs 함수 인자에 준 것과는 다르게 처음부터 전역변수로 설정해서 조건이 맞으면 count 변수를 1씩 증가시키는 방향으로 작성을 했는데요.이렇게 하니까 백준에서는 틀렸다고 나오더라구요.둘 다 if문 안에서 조건이 맞으면 카운트 변수를 1씩 증가시키는건 같은거라고 생각이 드는데 (물론 다르겠지만..)왜 카운트 변수를 인자로 넘겨줘야할까요? 감사합니다!