묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
k번째 수 문제 자체를 이해를 못하겠습니다.
문제가 무슨 말을 하는지 이해를 못하겠어요.다른분들은 어렵지 않게 이해를 하시는거 같은데, 코딩테스트 연습 - K번째수 | 프로그래머스 스쿨 (programmers.co.kr)이거랑 같은거 같은데,이거는 이해가 되거든요?근데, 지금 저 두번째 강의문제는 뭘 구하라는건지이해를 못하겠어요... 숫자배열은 어디있고, 범위를 지정하는 start end랑 k번째수가도대체 입력예제에서 어디 부분을 말하는거죠???
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
1-O 질문있습니다!
안녕하세요 큰돌님.강의를 수강하면서 질문이 있습니다.제가 몇시간동안 고민한 게 단 한 줄 추가로 시간초과 해결이 됬는데, 실전에서 이런 문제들을 만나면 과연 어떻게 해야할지 고민이 생기네요... 무작정 암기하는 방식은 공부가 아니라고 생각하는데 이런 문제들을 보면 또 암기가 맞다고 생각하게 되네요.큰돌님은 어떻게 생각하시는지 또 어떻게 공부 방향을 잡아야하는지 궁금합니다.
-
미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
격자판 최대합 테스트케이스 문제 있습니다.
반대 누적합에 대한 테스트케이스 예외가 없는거 같아요.public static void main(String[] args) { Scanner sc = new Scanner(System.in); int length = sc.nextInt(); int[][] intArr = new int[length][length]; for (int i = 0; i < length; i++) { for (int j = 0; j < length; j++) { intArr[i][j] = sc.nextInt(); } } System.out.println(answer(length, intArr)); } private static int answer(int length, int[][] intArr) { /* 대각선 누적합, 최대값 */ int xXSum = 0, xYSum = 0, max = 0; for (int i = 0; i < length; i++) { /* 행, 열 누적합 */ int rowSum = 0, colSum = 0; for (int j = 0; j < length; j++) { /* 각 행의 누적합 저장*/ rowSum += intArr[i][j]; /* 각 열의 누적합 저장*/ colSum += intArr[j][i]; } if (rowSum > max) max = rowSum; if (colSum > max) max = colSum; /* 대각선의 누적 합 저장*/ xXSum += intArr[i][i]; xYSum += intArr[length-1-i][length-1-i]; } /* 대각선 의 합 추가*/ if (xXSum > max) max = xXSum; if (xYSum > max) max = xYSum; return max; } }반대 대각선을 코드는 위 코드에서 바로 아래와 같습니다.xYSum += intArr[length-1-i][length-1-i];위에가 잘못 적용한 코드이고 (바로 위의 정대각선과 똑같은 작업을 하는것과 마찬가지입니다.)이것을 코딩채점사이트 상에 직접 돌려보면 정답으로 인정되지만 31 1 31 3 13 1 1이렇게 데이터 직접 넣어보면 9가 아닌 5가 최대값으로 출력됩니다.즉, 코딩채점에 반대 대각선에 대한 테스트케이스가 없다는 소리에요.xYSum += intArr[i][length-1-i];위 코드가 정답이고, 이렇게 했을때에는 처리가 되긴 되는데아무튼 현재 테스트케이스 상에 반대 대각선에 대한 누적합이 더 큰 경우가 없어서 처리가 안되고있습니다.그냥 반대 대각선 누적합 자체가 없는셈 치는거나 마찬가지에요
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
질문있습니다.
http://boj.kr/efd11008ccc14646a364953dfec3e77c 가장자리의 얼음을 녹인다.백조끼리 이어져있는지 확인한다.이 두 가지 동작을 while로 돌리고 싶었는데 어느 부분이 틀렸는지 모르겠습니다...도와주세요
-
미해결it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비
질문 있습니다
#include <iostream> #include <vector> #include <algorithm> using namespace std; int n; int maximum=-2147000000; vector<pair<int, int>> A; void DFS(int day, int now_day, int income); int main(){ cin >> n; for(int i=1; i<=n; i++){ int a, b; cin >> a >> b; A.push_back(make_pair(a, b)); } for(int i=1; i<=A.size(); i++){ DFS(A[i].first, i, 0); } cout << maximum; } void DFS(int day, int now_day, int income){ if(day>n){ if(income>maximum) maximum=income; return; } else if(day==n){ income+=A[now_day].second; if(income>maximum) maximum=income; return; } else{ income+=A[now_day].second; for(int i=day+1; i<=n; i++){ DFS(day+A[i].first, i, income); } } }해당 코드로는 알맞는 정답이 출력되지 않는데, 그 이유를 모르겠습니ㅏㄷ.
-
미해결더 개발자, 인터뷰 가이드
오타 제보합니다.
백기선님, 안녕하세요?제작해주신 강의들을 잘 보고 있습니다. "더 개발자, 인터뷰 가이드" > 4부 : 핵심 역량 파트 소개 > "6가지 주요 소프트 스킬"에서,(https://www.inflearn.com/course/lecture?courseSlug=개발자-인터뷰&unitId=61845)"Cusomer Focus"라고 작성하신 부분이 있습니다.https://www.microsoft.com/en-us/research/group/customer-insights-research/articles/driving-a-customer-driven-mindset-in-a-tech-organization/를 봤을 때, "Customer Focus"인 것으로 생각됩니다. 어쩌면 사소한 부분일 수도 있는데요...혹시, 오타 제보로 불편하셨다면 죄송합니다. 저는 계속 백기선님이 남기신 발자국들을 따라 가겠습니다.감사합니다!
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
알파벳 질문 있습니다.
http://boj.kr/b5d1bbdb6ec041f3aa76727fa518e4d3 str을 초기화시키는 시점과, str을 누적시키는 방법이 잘못된 거 같은데도무지 고치질 못하겠어요 .. 도와주세요
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
8-C 접근 방식 질문 있습니다.!
안녕하세요 큰돌님!http://boj.kr/01de00905c874d749fef7bbf7313fc02큰돌님의 풀이 방식이랑 조금 다른 방식으로 했는데요.완탐 + dp을 생각해서 풀어봤는데 테스트케이스도 실패하고 어디가 문제인지 잘 감이 안잡히네요...혹시 제 코드 봐주실수 있나요?제 접근 자체가 잘못된거면 그냥 깔끔하게 접게요....풀릴꺼 같은데 안풀리니깐 미련이 자꾸 남습니다.
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
16637번 질문
해당 문제에서 "3*8+5" 를 예시로 들어가면서 코드까지 옮기는 내용으로 수업을 해주셨습니다. 이 경우 당연하게 최대 1개 쌍의 괄호가 들어갈 수 있는 경우의 수가 2개이므로 수긍은 되었습니다.하지만, 제가 생각하기에 최대 수식의 길이가 19이므로 그 경우의 괄호는 상당히 많아질텐데 현재의 2개의 경우의 수를 고려하는 코드로도 커버가 되는 건가요? 재귀 형태라서 그렇다기에는 이해가 잘 안 갑니다..길이가 11인 예시 "3+5-8*1*4+2" 만 해도(3+5)-(8*1)*(4+2)로 최대 괄호의 수(쌍)가 3개짜리인 경우의 수가 상당히 많아질 수 있는데 현재의 코드가 어떻게 되는건지 모르겠습니다!
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
그대로 입력했는데 틀렸다고 뜹니다.
#include <bits/stdc++.h> using namespace std; int n, cnt[26]; string s, ret; int main(){ cin >> n ; fot(int i=0; i<n; i++){ cin >> s ; cnt[s[0] - 'a']++; } for(int j = 0; j < 26; j++){ if (cnt[j] >= 5) ret += j + "a"; } if(ret.size()) cout << ret << "\n"; else cout << "PREDAJA" << "\n"; } 어디가 틀린걸까요
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
6-K 질문있습니다
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요. 강의 잘 듣고 있습니다. 강의 풀이 참고하여 코드 작성하였는데.ans.push_back({it-LIS.begin(), A[i]});라인의 위치에 따라 "it-LIS.begin()"의 값이 쓰레기값일 때도 있고 그래서.., 현상의 이유가 궁금합니다. ans.push_back()을 뒤에 위치시켰을때, pos_ 값이 쓰레기값이 되는 이유 질문드려요. 그 이유로,LIS.push_back(A[i]); 가 수행되고 나면 LIS.begin()의 주소값이 변경되는 것으로 생각되는데, 맞을까요? 전체 코드>>#include <bits/stdc++.h> using namespace std; int N; vector<int> A; vector<int> LIS, Ret; int len; vector<pair<int, int>> ans; int main(){ cin.tie(NULL); cout.tie(NULL); ios_base::sync_with_stdio(false); cin >> N ; A = vector<int>(N,0); for(int i =0 ; i < N ; ++i) cin >> A[i]; for(int i = 0 ; i < N ; ++i){ auto it = lower_bound(LIS.begin(), LIS.end(), A[i]); ans.push_back({it-LIS.begin(), A[i]}); /* 현재 위치에서 push_back 하였을 떄: >> ans 배열에 담긴 값: ans = { {0, 10} {1, 20} {0, 10} {2, 30} {1, 20} {3, 50} } */ if (it == LIS.end()) LIS.push_back(A[i]); else *it = A[i]; /* 아래 위치에서 push_back 하였을 떄(주석): ans.push_back({it-LIS.begin(), A[i]}); >> ans 배열에 담긴 값: ans = { {-1405095968, 10} {-7, 20} {0, 10} {10, 30} {1, 20} {3, 50} } */ } cout << "디버깅" << endl; for(auto a : ans) cout << a.first << " " << a.second << endl; cout << endl; int len = LIS.size(); cout << len << endl; // 배열을 trace for(int i = N-1 ; i >= 0 ; --i){ if (ans[i].first == len-1){ Ret.push_back(ans[i].second); len--; } } reverse(Ret.begin(), Ret.end()); for(auto r: Ret) cout << r << " "; cout << endl; return 0; }
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-R 트리 질문있습니다
http://boj.kr/8cefb4955fb64d18ad353997d162cc29제출시 77%에서 오답처리 되는데, 어느 부분이 틀렸는지 모르겠습니다.- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
6_J 질문드려요.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요.강의 잘 듣고 있습니다. 다름이 아니라.ll right = 1E18로 지정하면 제출시 틀렸습니다가 뜨고, ll right = 1E15 정도로 하면 정답이 뜨는데, mid 의 값계산이 잘못되고 있는건가 체크해봐도 오버플로우가 날만한게 없어서. 이유가 궁금합니다. #include <bits/stdc++.h> using namespace std; typedef long long ll; ll N, M; vector<ll> A; ll temp; bool check(ll mid){ temp = M; for(int i =0 ; i < M ; ++i){ temp += mid/A[i]; } return temp >= N; } int main(){ cin >> N >> M; A = vector<ll>(M,0); for(int i = 0 ; i < M ; ++i) cin >> A[i]; if ( N <= M) cout << N << endl; else{ ll left = 0; ll right = 1E18; ll ret = 0; while(left <= right){ ll mid = (left+right)/(long long)2; if(check(mid)){ right = mid-1; ret = mid; } else{ left = mid+1; } } temp = M; for(int i =0 ; i < M ; ++i) temp += ((ret-1)/A[i]); for(int i =0 ; i < M ; ++i){ if (ret % A[i] == 0) temp++; if (temp ==N){ cout << i +1 << "\n"; return 0; } } } return 0; }
-
미해결Do it! 알고리즘 코딩테스트 with JAVA
DNA 비밀번호 (백준 12891) 통과가 안됩니다.
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Main { static int[] myArr; // 내가 받은 문자열의 부분 문자열 조건 만족하는지 확인용 static int[] checkArr; // 주어진 부분 문자열 조건 static int checkSecret; // 모두 만족하는지 카운트 public static void main(String[] args) throws IOException { BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer stringTokenizer = new StringTokenizer(bufferedReader.readLine()); int S = Integer.parseInt(stringTokenizer.nextToken()); // 문자열의 길이 int P = Integer.parseInt(stringTokenizer.nextToken()); // 부분 문자열의 길이 int result = 0; myArr = new int[4]; checkArr = new int[4]; checkSecret = 0; char[] A; // 주어진 문자열을 담을 배열 A = bufferedReader.readLine().toCharArray(); stringTokenizer = new StringTokenizer(bufferedReader.readLine()); for(int i = 0; i < 4; i++) { checkArr[i] = Integer.parseInt(stringTokenizer.nextToken()); if(checkArr[i] == 0) { // 주어진 조건이 0이면 이미 만족하기 때문에 checkSecret을 1증가시켜줌 checkSecret++; } } for(int i = 0; i < P; i++) { // 부분 문자열 처음 받을때 세팅 Add(A[i]); } if(checkSecret == 4) { result++; } for(int i = P; i < S; i++) { // 슬라이딩 윈도우 int j = i - P; Add(A[i]); Remove(A[j]); if(checkSecret == 4) { result++; } } System.out.println(result); bufferedReader.close(); } private static void Remove(char c) { switch (c) { case 'A': if (myArr[0] == checkArr[0]) { checkSecret--; myArr[0]--; } break; case 'C': if (myArr[1] == checkArr[1]) { checkSecret--; myArr[1]--; } break; case 'G': if (myArr[2] == checkArr[2]) { checkSecret--; myArr[2]--; } break; case 'T': if (myArr[3] == checkArr[3]) { checkSecret--; myArr[3]--; } break; } } private static void Add(char c) { switch (c) { case 'A' : myArr[0]++; if(myArr[0] == checkArr[0]) { checkSecret++; } break; case 'C' : myArr[1]++; if(myArr[1] == checkArr[1]) { checkSecret++; } break; case 'G' : myArr[2]++; if(myArr[2] == checkArr[2]) { checkSecret++; } break; case 'T' : myArr[3]++; if(myArr[3] == checkArr[3]) { checkSecret++; } break; } } }로컬에선 문제없이 동작하는데 백준에서는 계속 통과가 안되네요.. 혹시 동일하신분들 계실까요?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
4-a 왜 틀렸는지 궁금합니다
http://boj.kr/5b42789344b749769d5371b7e76dfb10 안녕하세요 큰돌님 !강의 너무 재밌게 잘 듣고 있습니다.문제해설대로 map을 사용하는게 좋은 방법이란걸 깨달았지만 해설을 듣기전 혼자 풀었을때 작성한 코드인데요.저는 전역으로 벡터를 만들어서 더 좋은 조건(사전 순으로 빠른)의 벡터가 만들어졌을 시 비교하여 전역 벡터로 할당해주는 방식으로 짜보았는데요.해당문제를 검색해보며 여러 테스트케이스를 해봐도 맞았는데 제출은 틀렸다고 나옵니다 .. ㅠㅜㅠㅜ어떤 반례가있는지 궁금합니다.
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3-O 시간복잡도 관련 질문있습니다.
안녕하세요 큰돌님문제 해설에서 시간복잡도 계산하실때 300C3 이라고 하신 부분에 대해서 질문드립니다.go 함수 호출시마다 check 함수또한 호출하게 될텐데10*30 배열의 경우 check 한번당 300번의 탐색을 해야하므로 300C3 * 300이 되어야하는것이 아닌가요?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
a.cpp 오류
이런 상태로 터미널에서 g++ -std=c++14 -Wall a.cpp -o test.out 를 하여도 에러가 나며 #include <bits/stdc++.h> 부분에도 에러가 납니다. 도움 부탁드리겠습니다!
-
해결됨SQL 코딩테스트를 위한 첫 걸음
LEETCODE - Sales Analysis 3 코드 질문드립니다.
안녕하세요, 젬마님 강의 잘 듣고 있는 수강생입니다. 혹시 수업에서 다루지 않은 leetcode 문제도 질문 받아주실지 잘 모르겠지만 한 번 올려 봅니다...!Sales Analysis 3 문제의 답을 아래와 같이 적었는데 계속 오류가 납니다. 답변 주시면 감사하겠습니다. SELECT P.PRODUCT_ID, P.PRODUCT_NAME FROM PRODUCT P INNER JOIN ( SELECT * FROM SALES WHERE PRODUCT_ID NOT IN ( SELECT PRODUCT_ID FROM SALES WHERE SALE_DATE < '2019-01-01' OR SALE_DATE > '2019-03-31' ) ) N ON P.PRODUCT_ID = N.PRODUCT_ID;
-
해결됨[자바/Java] 문과생도 이해하는 DFS 알고리즘! - 입문편
촌수 계산
count라는 매개변수를 같이 전달해주기 보다 dfs가 호출될 때마다 answer를 넣어주는 방식으로 풀어봤는데 왜인지 end 값을 찾았을 때 return이 적용이 안되는 거 같습니다. 혹시 어떤 문제가 있는지 봐주실 수 있나요? import java.util.*; import java.io.*; class Main { static int N, start, end, M; static boolean[] visited; static ArrayList<Integer>[] graph; static int answer = -1; private static void dfs(int i) { if (i == end) { System.out.println("end: " + end); return; } visited[i] = true; for (int j = 0; j < graph[i].size(); j++) { int next = graph[i].get(j); if (visited[next] == false) { System.out.println("next: " + next); dfs(next); answer++; } } } public static void main(String[] args) throws IOException{ // 입력 및 초기화 BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); N = Integer.parseInt(br.readLine()); // 노드의 개수 StringTokenizer st = new StringTokenizer(br.readLine()); start = Integer.parseInt(st.nextToken()); // 시작 노드 end = Integer.parseInt(st.nextToken()); // 끝 노드 System.out.println(end); M = Integer.parseInt(br.readLine()); // 간선의 개수 visited = new boolean[N+1]; // graph 선언 후 초기화 graph = new ArrayList[N+1]; for (int i = 1; i <= N; i++) { graph[i] = new ArrayList<>(); } for (int i = 1; i <= M; i++) { st = new StringTokenizer(br.readLine()); int x = Integer.parseInt(st.nextToken()); int y = Integer.parseInt(st.nextToken()); graph[x].add(y); graph[y].add(x); } System.out.println(Arrays.toString(graph)); // dfs 호출 dfs(start); System.out.println(answer); bw.close(); br.close(); } }
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
두 코드의 차이가 무엇인지 궁금합니다
https://www.acmicpc.net/source/share/52db515483bf48409679906723d0d91f위 코드는 오답이고https://www.acmicpc.net/source/share/4d3ef9f8e6c74ed2af729ac607ef92dd위 코드는 정답인데두 코드의 로직에 어떤 차이가 있는지 궁금합니다- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.