묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
런타임 에러 질문 있습니다.
배열 11. 임시반장 정하기 에서 문제를 풀고 있는데해당 코드에서 런타임 에러가 발생하는데 이유를 알 수 있을까요? import java.util.ArrayList; import java.util.Arrays; import java.util.Scanner; public class Main { public static void main(String[] args) { Main t = new Main(); Scanner in = new Scanner(System.in); int n = in.nextInt(); int[][] arr = new int[n][n]; // int[] arr2 = new int[n]; for (int i = 0 ; i < n; i++){ for (int j =0; j < n; j++) arr[i][j] = in.nextInt(); } // for (int i = 0 ; i < n; i++){ // arr2[i] = in.nextInt(); // } int test = t.solution11(n,arr); System.out.print(test); } // 11번 임시반장 private int solution11(int n, int[][] arr){ int answer = 0; int MAX = 0; for (int i =0; i < 5; i ++){ int cnt = 0; for (int j=0; j < n;j++){ int temp = arr[j][i]; for (int k =0; k <n; k++){ if (k == j) continue; else if (temp == arr[k][i]){ cnt++; } } if (cnt > MAX){ MAX = cnt; answer = j; } } } return answer; } }
-
해결됨코딩테스트 [ ALL IN ONE ]
공부 방법에 대해 질문이 있습니다.
처음에는 문제만 보고 1시간정도 고민해서 발상이 떠오르지 않았을 때만 발상 관련 강의를 보고, 그 다음에 또 1시간 동안 고민해서 발상을 코드로 옮기는 작업을 했는데도 테스트 케이스를 통과하지 못해서 마지못해 코드 구현 강의를 보았습니다. 그런데 이러한 bfs, dfs문제는 그냥 틀이므로 암기하라고 하셨을 때 허탈감이 들었습니다. 이러면 그냥 코테문제의 전형적인 틀이라고 받아들이고, 암기한 방법으로 다른 문제에 응용하면 되나요?
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
히든퀘스트 3번 질문드립니다
https://www.acmicpc.net/step/16단계별풀기 16 단계 14번문제 제외 하고 다 풀기라고 써있는데 지금 단계별 풀기로는 dp가 23단계라 그리고 14번 문제 전깃줄은 6주차에 있는 문제라 풀어야되는거 같은데 다시 정정해주시면 감사드리겠습니다
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
균형이진트리 높이 관련해서 질문이 있습니다!
이런 트리가 있다면 높이가 3이 될텐데요.높이 공식을 적용해보면 log₂N - 1 을 해서 2.xxx 가 나오는 거 같은데 왜 다른걸까요? 혹시 이 트리가 균형이진트리가 아닐까요? 3번 노드가 6번 노드랑 깊이 차이가 2가 나서 균형이진트리가 아닐까요?그런데 선생님이 블로그에 예시로 보여주신 균형이진트리 모습에도 깊이가 2차이 나는 경우가 있긴 하더라구요...그래서 뭔가 이 이유는 아닌 거 같다는 생각이 들었습니다.개념이 좀 헷갈리네요ㅠ 균형이진트리가 맞다면 왜 높이 공식으로 구한 값이랑 실제 높이랑 다른건지 궁금합니다!
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
c++ 구조체 질문
#include<bits/stdc++.h> using namespace std; typedef long long ll; struct Node{ int num; vector<int> links; }; Node A[40]; int main(){ ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0); int num = 2; for (int i = 0; i < 19; i++){ vector<int> v; v.push_back(i+1); A[i] = {num,v}; num+=2; } for (int i = 0; i < 19; i++){ cout << A[i].num << " "; } } #include<bits/stdc++.h> using namespace std; typedef long long ll; struct Node{ int num; vector<int> links; Node(int NUM,vector<int> LINKS) : num(NUM),links(LINKS){} }; Node A[20]; int main(){ ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0); int num = 2; for (int i = 0; i < 19; i++){ vector<int> v; v.push_back(i+1); A[i] = Node(num,v); num+=2; } for (int i = 0; i < 19; i++){ cout << A[i].num << " "; } }첫번째 코드는 정상작동되는데, 두번째 코드는 error: no matching function for call to ‘Node::Node()’ 14 | Node A[20];이런 오류코드를 띄웁니다.두번째 코드에 이상이 없다고 생각하는데 왜 저런 오류가 나는지 궁금합니다.
-
미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
최대 매출 코드 풀이랑 동일한 시간복잡도가 나오나요?
package slidingwindow; import java.util.Scanner; public class MaximumSales { static int solution(int n, int k, int[] arr) { int p1 = 1; int sum = 0; int max = 0; for(int i = 0; i < k; i++) { sum += arr[i]; } // 최초 값을 max에 대입 max = sum; // 최초 p[0] + p[1] + p[2] .... 값 제외 // p[1] + p[2] ... 부터 while(p1 < n-k+1) { sum = sum - arr[p1-1] + arr[p1+k-1] ; p1++; max = max > sum ? max : sum; } return max; } public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int k = sc.nextInt(); int[] arr = new int[n]; for(int i = 0; i < n; i++) { arr[i] = sc.nextInt(); } System.out.println(MaximumSales.solution(n, k, arr)); } }
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
입출력 관련 전체적인 질문 있습니다!
어떤 문제는 cin + cout을 사용하시고 2-A번 문제는 scanf와 printf를 사용하셨는데 언제 무엇을 사용하시는지 그 기준이 궁금합니다! 감사합니다!
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
6-B 질문있습니다.
강사님의 로직이 잘 이해가 가지 않습니다.처음 문제를 풀 때 모든 블루레이를 사용해야 한다 고 생각해서 계속 오답이 나왔었는데요, 그 부분을 지우고 (cnt가 M과 같다는 조건문을 지우고) mid의 최소를 찾아 이분탐색 시켰더니 결국 통과는 했습니다. 그리고 강사님의 코드를 참고했는데, 동작방식이 잘 이해가 가지 않았습니다. 다음은 강사님 코드의 로직을 이해해보고 제 방식으로 수정해본 코드입니다.bool check(int mid) { if (mx > mid) return false; int temp = mid; int cnt = 0; for (int i = 0; i < n; i++) { if (mid - a[i] == 0) { ++cnt; mid = temp; continue; } else if (mid - a[i] < 0) { ++cnt; mid = temp; --i; } else mid -= a[i]; } if (mid != temp) cnt++; return cnt <= m; }else if (mid-a[i]<0) 의 조건문에서 i를 감소시켜서 다시 검사하게끔 하여 n+@의 순회를 합니다.강사님은 이 부분을 최적화 하셔서 기존 14행과 같은 코드를 만드신 것 같은데요, 제가 제대로 이해한건지 (질의1)제가 제대로 이해한게 맞다면, 처음부터 n회 순회만 하게끔 의도하셔서 코드를 작성하신건지 (처음 코드를 쓸 때부터 바로 저렇게 짜신건지) 아니면 최적화를 하다가 짜신건지 궁금합니다. (질의2)저런 발상 자체를 해본적이 없어서 굉장히 낯선 코드를 보는 기분이었네요..감사합니다.
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
6-J 풀이과정
덩어리=최소공배수? 이고ret = 35라는건 최소공배수가 7일때 7*5해서 최소공배수의 배수이고ret-1/a[i] 하는건 28 만드는 과정인건 알겠는데8:40 보면 ret%a[i]==0 있는 for문이 설명이 없고 잘 이해도 안가서 그러는 데 for(;;){if(ret%a[i]==0) if(temp==n))~ 이 부분 코드 설명 해 주실 수 있으신가요?공유 소스 보기 (acmicpc.net)
-
미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
1번문제 틀린 이유를 모르겠습니다.
import java.util.Scanner; // Press Shift twice to open the Search Everywhere dialog and type `show whitespaces`, // then press Enter. You can now see whitespace characters in your code. public class Main { public int solution(String data, char what) { int count = 0; data = data.toLowerCase(); for (char a : data.toCharArray()) { if (a == what) { count++; } } return count; } public static void main(String[] args) { Main T = new Main(); Scanner scanner = new Scanner(System.in); String data = scanner.nextLine(); char what = scanner.nextLine().charAt(0); System.out.println(T.solution(data, what)); } }1번 문제인데 이대로 제출하니까 틀렸다고 합니다. 원인을 모르겠어요 ㅠ
-
미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
8-1 합이 같은 부분집합
정확하게 출력이 되는것 같은데 오답이라고 나옵니다 선생님.. 제가 잘못 짠 부분이 있을까요??import java.util.Scanner; class Main { static int n,total; static int[] array; static boolean flag; public static void main(String[] args) { Main T = new Main(); Scanner sc = new Scanner(System.in); n = sc.nextInt(); total =0; array = new int[n]; for (int i = 0; i < n; i++) { array[i] = sc.nextInt(); total += array[i]; } flag = false; T.DFS(0, 0); if (flag) { System.out.println("YES"); } else { System.out.println("NO"); } } void DFS(int L, int sum) { if (L == n) { return; } if (sum == total / 2) { flag = true; return; } if (sum > total / 2) { return; } DFS(L + 1, sum + array[L]); DFS(L + 1, sum); } }
-
해결됨독하게 C를 배운 사람을 위한 선형 자료구조
05_adtFileIO 질문있어요.
search -> edit -> save 중 save에 궁금한 게 있습니다.int SaveNodeToFile(MYNODE* pNode)를 보면파일에서 불러낸 경우만 고려돼있습니다.신규 데이터를 찾아서 수정하는 경우에는 저장하지 않고 프로그램 종료 시 신규 데이터 일괄로 저장하는 방법을 써야할까요? pNode->bNew 값을 따져서 신규인지 구분하고 ab+모드로 파일 끝에 저장하는 건 생각했는데파일에 저장했으니 bNew를 false로 수정해야하나?수정하면 offset이 0이라 다시 검색할 때 offset이 0인 데이터를 찾을텐데? 그럼 offset 값은 어떻게 주지? bNew 값을 true로 저장하고 신규 데이터 일괄 저장할 때 덮어 써야하나? 라는 고민에 빠졌습니다. 어떤 방법이 좋을까요?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3-E 재귀 시간초과
안녕하세요! 항상 강의 잘 보고 있습니다.다름이 아니라, 아래 링크처럼 재귀 + 백트래킹으로 풀었음에도 불구하고 시간초과가 나는 이유가 감이 안옵니다.어디 부분 때문에 시간 초과가 일어나는 것일까요??https://www.acmicpc.net/source/share/a30df43331f9487eb25d43dfa7a24e95
-
미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
머리를 열심히 굴려서 정답을 맞추는 코드를 작성 하였지만, 마음에 안듭니다 ㅠㅠ
모든 e를 찾아서 해당 위치를 배열에 담고, 루프를 돌려서 제일 최소 거리를 구해서 리턴 하게끔 만들었으나, 무언가 마음에 들지 않네요. 질문 올리고 강사님 강의를 바로 보겠습니다! function solution(str, str2) { const findAry = []; for (let i = 0; i < str.length; i++) { if (str[i] === str2) findAry.push(i); } return str.split("").map((v, index) => { const max = []; for (const value of findAry) { max.push(Math.abs(value - index)); } eturn max.sort((a, b) => a - b)[0]; }); } console.log(solution("teachermode","e"));
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3-H_13913 숨바꼭질4
안녕하세요 큰돌님! 저는 prev를 처음부터 떠올리지 못해 vector로 trace를 시도했는데요. 테스트 코드는 잘 통과하는데 제출을하면 런타임에러(out of bound)가 뜨네요 ㅜㅜ 혹시 왜 범위 초과가 뜨는지 알 수 있을까요?http://boj.kr/c2069ab9e0d64c6ab7d86ce198e32e94
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
5-g
항상 답변 주셔서 감사합니다.lo hi가 작은 수 부터 시작한다면 lo~hi의 합이 n 보다 작은 경우 hi가 ++ 되는 것은 이해가 됩니다. 하지만 lo ---- hi 사이에 큰 차이가 있다고 가정할 경우lo~hi의 합이 n 보다 크면 lo를 크게 하라고 하셨는데, hi를 크게 해주면 안되는 이유는 뭔가요??lo~hi의 합이 n 보다 작으면 hi를 크게 하라고 하셨는데 lo를 작게 할 수 있지도 않나요?? else if (hi == p)break; 이 코드 의미를 좀만 더 자세히 설명 부탁드립니다.
-
해결됨SQL 코딩테스트를 위한 첫 걸음
서브쿼리 질문
선생님 안녕하세요 서브쿼리 관련해서 질문드립니다...선생님이 내주신 inner join 연습문제를 풀어보면서 궁금한 점이 생겼는데서브쿼리를 적용할시 from 절 이후에 서브쿼리가 들어가기도 하고 아니면 inner join 이후 ㅎ서브쿼리가 들어가는 경우도 있고 하는거 같은데.. 그 차이점이 잘 이해가 가질 않아서요.. 어떤 경우에서 그렇게 판단하여 서브쿼리를 넣는 것인지 확인부탁드립니다..
-
해결됨SQL 코딩테스트를 위한 첫 걸음
EASY INNER JOIN 관련 average-selling-price 연습문제
선생님 이 문제에 대해서 and p.start_date <= u.purchase_dateand u.purchase_date <= p.end_date이 부분을 왜 조건을 달아줘야 하는지 궁금합니다. 따로 문제에 명시되지 않은거같은데.. 확인부탁드립니다! select p.product_id ,round(sum(u.units*p.price)/sum(u.units), 2) average_price from Prices pinner joinUnitsSold uon p.product_id=u.product_idand p.start_date <= u.purchase_dateand u.purchase_date <= p.end_dategroup by p.product_id;
-
미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
채점 사이트 연결
우측 상단에 채점 버튼을 누르면 브라우저 새 창만 열리고 사이트가 정상적으로 안 뜨는데 어디서 채점사이트를 이용해야하나요??
-
미해결입문자를 위한 코딩테스트 핵심(이론과 문제풀이) [Python]
강의 3-6 두수의 합(해시) 질문
강의 듣기전에 이렇게 풀어본 코드인데요.Counter로 미리 key,value를 채워두는 것 자체가 데이터최적화도 안되고 접근방법이 조금 엇나갔다는 건 알겠습니다. 그래서 이미 빈도수를 모두 주었기 때문에 (target-i != i)라는 조건이 추가로 생긴 것 같은데, if문에서 저런식으로 두가지 조건을 묶는 방식은 나쁜건가요? 공부를 시작하지 많이 안됐는데 뭔가 저런식으로 조건이 생기면 기분이 찝찝합니다.from collections import Counter def solution(nums,target): answer = [0]*2 nH = Counter(nums); for i in nums: if (target-i in nH) & (target-i != i): answer = sorted([i,target-i]) return answer return answer