inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

173만명의 커뮤니티!! 함께 토론해봐요.

균형이진트리 높이 관련해서 질문이 있습니다!

해결됨

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

이런 트리가 있다면 높이가 3이 될텐데요. 높이 공식을 적용해보면 log₂N - 1 을 해서 2.xxx 가 나오는 거 같은데 왜 다른걸까요? 혹시 이 트리가 균형이진트리가 아닐까요? 3번 노드가 6번 노드랑 깊이 차이가 2가 나서 균형이진트리가 아닐까요? 그런데 선생님이 블로그에 예시로 보여주신 균형이진트리 모습에도 깊이가 2차이 나는 경우가 있긴 하더라구요...그래서 뭔가 이 이유는 아닌 거 같다는 생각이 들었습니다. 개념이 좀 헷갈리네요ㅠ 균형이진트리가 맞다면 왜 높이 공식으로 구한 값이랑 실제 높이랑 다른건지 궁금합니다!

  • c++
  • 코딩-테스트
비가싫어요 댓글 1 좋아요 0 조회수 528

c++ 구조체 질문

미해결

10주완성 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]; 이런 오류코드를 띄웁니다.두번째 코드에 이상이 없다고 생각하는데 왜 저런 오류가 나는지 궁금합니다.

  • c++
  • 코딩-테스트
김동훈 댓글 2 좋아요 0 조회수 311

최대 매출 코드 풀이랑 동일한 시간복잡도가 나오나요?

미해결

자바(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)); } }

  • java
  • 코딩-테스트
이주용 댓글 1 좋아요 0 조회수 293

입출력 관련 전체적인 질문 있습니다!

미해결

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

어떤 문제는 cin + cout을 사용하시고 2-A번 문제는 scanf와 printf를 사용하셨는데 언제 무엇을 사용하시는지 그 기준이 궁금합니다! 감사합니다!

  • c++
  • 코딩-테스트
  • 입출력
공부합시다 댓글 1 좋아요 0 조회수 340

6-B 질문있습니다.

미해결

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

강사님의 로직이 잘 이해가 가지 않습니다. 처음 문제를 풀 때 모든 블루레이를 사용해야 한다 고 생각해서 계속 오답이 나왔었는데요, 그 부분을 지우고 (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) 저런 발상 자체를 해본적이 없어서 굉장히 낯선 코드를 보는 기분이었네요.. 감사합니다.

  • c++
  • 코딩-테스트
Maruche 댓글 2 좋아요 0 조회수 304

6-J 풀이과정

해결됨

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

덩어리=최소공배수? 이고 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)

  • c++
  • 코딩-테스트
조현성 댓글 1 좋아요 0 조회수 308

1번문제 틀린 이유를 모르겠습니다.

미해결

자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비

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
  • 코딩-테스트
Park Jiho 댓글 1 좋아요 0 조회수 340

8-1 합이 같은 부분집합

미해결

자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비

정확하게 출력이 되는것 같은데 오답이라고 나옵니다 선생님.. 제가 잘못 짠 부분이 있을까요?? 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); } }

  • java
  • 코딩-테스트
민표 댓글 2 좋아요 0 조회수 213

05_adtFileIO 질문있어요.

해결됨

독하게 C를 배운 사람을 위한 선형 자료구조

search -> edit -> save 중 save에 궁금한 게 있습니다. int SaveNodeToFile(MYNODE* pNode)를 보면 파일에서 불러낸 경우만 고려돼있습니다. 신규 데이터를 찾아서 수정하는 경우에는 저장하지 않고 프로그램 종료 시 신규 데이터 일괄로 저장하는 방법을 써야할까요? pNode->bNew 값을 따져서 신규인지 구분하고 ab+모드로 파일 끝에 저장하는 건 생각했는데 파일에 저장했으니 bNew를 false로 수정해야하나? 수정하면 offset이 0이라 다시 검색할 때 offset이 0인 데이터를 찾을텐데? 그럼 offset 값은 어떻게 주지? bNew 값을 true로 저장하고 신규 데이터 일괄 저장할 때 덮어 써야하나? 라는 고민에 빠졌습니다. 어떤 방법이 좋을까요?

  • c
  • 코딩-테스트
  • 알고리즘
  • vc++
한지수 댓글 1 좋아요 0 조회수 425

3-E 재귀 시간초과

미해결

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

안녕하세요! 항상 강의 잘 보고 있습니다. 다름이 아니라, 아래 링크처럼 재귀 + 백트래킹으로 풀었음에도 불구하고 시간초과가 나는 이유가 감이 안옵니다. 어디 부분 때문에 시간 초과가 일어나는 것일까요?? https://www.acmicpc.net/source/share/a30df43331f9487eb25d43dfa7a24e95

  • c++
  • 코딩-테스트
it Ez 댓글 1 좋아요 0 조회수 277

머리를 열심히 굴려서 정답을 맞추는 코드를 작성 하였지만, 마음에 안듭니다 ㅠㅠ

미해결

자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)

모든 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"));

  • javascript
  • 코딩-테스트
rhkdtjd_12 댓글 1 좋아요 0 조회수 212

3-H_13913 숨바꼭질4

해결됨

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

안녕하세요 큰돌님! 저는 prev를 처음부터 떠올리지 못해 vector로 trace를 시도했는데요. 테스트 코드는 잘 통과하는데 제출을하면 런타임에러(out of bound)가 뜨네요 ㅜㅜ 혹시 왜 범위 초과가 뜨는지 알 수 있을까요? http://boj.kr/c2069ab9e0d64c6ab7d86ce198e32e94

  • c++
  • 코딩-테스트
이효민 댓글 1 좋아요 0 조회수 209

5-g

미해결

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

항상 답변 주셔서 감사합니다. lo hi가 작은 수 부터 시작한다면 lo~hi의 합이 n 보다 작은 경우 hi가 ++ 되는 것은 이해가 됩니다. 하지만 lo ---- hi 사이에 큰 차이가 있다고 가정할 경우 lo~hi의 합이 n 보다 크면 lo를 크게 하라고 하셨는데, hi를 크게 해주면 안되는 이유는 뭔가요?? lo~hi의 합이 n 보다 작으면 hi를 크게 하라고 하셨는데 lo를 작게 할 수 있지도 않나요?? else if (hi == p)break; 이 코드 의미를 좀만 더 자세히 설명 부탁드립니다.

  • c++
  • 코딩-테스트
0508gyhun 댓글 1 좋아요 0 조회수 266

서브쿼리 질문

해결됨

SQL 코딩테스트를 위한 첫 걸음

선생님 안녕하세요 서브쿼리 관련해서 질문드립니다... 선생님이 내주신 inner join 연습문제를 풀어보면서 궁금한 점이 생겼는데 서브쿼리를 적용할시 from 절 이후에 서브쿼리가 들어가기도 하고 아니면 inner join 이후 ㅎ서브쿼리가 들어가는 경우도 있고 하는거 같은데.. 그 차이점이 잘 이해가 가질 않아서요.. 어떤 경우에서 그렇게 판단하여 서브쿼리를 넣는 것인지 확인부탁드립니다..

  • sql
  • mysql
  • 코딩-테스트
합격가자 댓글 1 좋아요 1 조회수 378

EASY INNER JOIN 관련 average-selling-price 연습문제

해결됨

SQL 코딩테스트를 위한 첫 걸음

선생님 이 문제에 대해서 and p.start_date <= u.purchase_date and u.purchase_date <= p.end_date 이 부분을 왜 조건을 달아줘야 하는지 궁금합니다. 따로 문제에 명시되지 않은거같은데.. 확인부탁드립니다! select p.product_id , round(sum(u.units*p.price)/sum(u.units), 2) average_price from Prices p inner join UnitsSold u on p.product_id=u.product_id and p.start_date <= u.purchase_date and u.purchase_date <= p.end_date group by p.product_id;

  • sql
  • mysql
  • 코딩-테스트
합격가자 댓글 1 좋아요 1 조회수 296

채점 사이트 연결

미해결

자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비

우측 상단에 채점 버튼을 누르면 브라우저 새 창만 열리고 사이트가 정상적으로 안 뜨는데 어디서 채점사이트를 이용해야하나요??

  • java
  • 코딩-테스트
유댕 댓글 1 좋아요 0 조회수 336

강의 3-6 두수의 합(해시) 질문

미해결

입문자를 위한 코딩테스트 핵심(이론과 문제풀이) [Python]

강의 듣기전에 이렇게 풀어본 코드인데요. 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

  • python
  • 코딩-테스트
주원 댓글 1 좋아요 0 조회수 342

채점 오류

해결됨

자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비

import java.io.*; import java.util.LinkedList; import java.util.Queue; import java.util.StringTokenizer; public class Main { public static int solution(int[] arr, int K) { int max = 0; Queue<Integer> zeroPoint = new LinkedList<>(); int lp = 0, length = 0; for (int rp = 0; rp < arr.length; rp++) { if (arr[rp] == 0) { zeroPoint.offer(rp); // 0이 꽉 찼을 경우 if (zeroPoint.size() > K) { length = rp - lp; max = Math.max(length, max); Integer poll = zeroPoint.poll(); lp = poll + 1; } } } return max; } public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st = new StringTokenizer(br.readLine()); int N = Integer.parseInt(st.nextToken()); int K = Integer.parseInt(st.nextToken()); int[] arr = new int[N]; StringTokenizer st2 = new StringTokenizer(br.readLine()); for (int i = 0; i < N; i++) { arr[i] = Integer.parseInt(st2.nextToken()); } System.out.print(solution(arr, K)); } } 6. 최대 길이 연속 부분수열 파트에서 이 코드가 정답이라고 나옵니다. 테스트 케이스가 부족해서 모든 문제에서 이런 현상이 발생하는건지, 이 문제에만 오류가 있는건지 궁금합니다. 반례 테스트 케이스 : 14 2 1 1 0 0 1 1 0 1 1 0 0 1 1 1 기댓값 : 7 출력값 : 6

  • java
  • 코딩-테스트
Kun 댓글 1 좋아요 0 조회수 278

증가 수열 만들기에서 궁금한 점이 있어 질문드립니다.

미해결

파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)

증가하는 수열을 만들기 위해 반복문을 통해 좌 우를 번갈아가며 하나씩 지난 수와 비교하고 있습니다. 여기서 질문입니다. last=2 left = 4 right = 3 예를 들어 현재 상황이 위와 같을 경우 선생님께서 짜신 코드에서는 4와 3이 tmp에 추가된 후 정렬되어 수열을 만들것으로 예상되는데 원래대로 하면 left 4가 수열에 추가되고 다음에 순차가 돌아간 right는 3이기 때문에 수열에 포함될 수 없게 되는거 아닌가요?

  • python
  • 코딩-테스트
안윤기 댓글 1 좋아요 0 조회수 256

Dev C++ 프로그램 사용 시 vector 관련 에러 발생할 경우. (질문은 아닙니다!!)

미해결

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

해당 내용은 질문이 아닌 저와 같은 에러가 발생하시는 분들을 위해 남긴 글입니다..! Dev C++ 프로그램으로 vector를 선언 후 컴파일하는 과정에서 에러가 발생했습니다. 에러 내용은 다음과 같습니다. [Error] : in c++98 'a' must be initialized by constructor, not by '{...}' [Error] : no matching function for call to 'std::vector<int>::vector(<brace-enclosed initializer list>)' 발생 이유 : C++98은 표준 컨테이너를 초기화하는 초기화 목록을 지원하지 않아 C++2011 표준에 따라 적절한 컴파일 옵션을 설정하기 위함이라고 합니다.(정확하지 않을 수 있습니다!) 해결 방법 Tools -> Compile Options -> General 'Add the following~' 문장 바로 옆에 있는 박스 체크하기. 'Add the following~' 밑에 있는 박스 안에 "-std=c++11"(큰따옴표도 같이)를 작성. 하단에 있는 ok 버튼 누르기. 저는 이와 같은 방법으로 해결했습니다.

  • c++
  • 코딩-테스트
정현아 댓글 1 좋아요 0 조회수 778

인기 태그

인프런 TOP Writers

주간 인기글