묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨자바(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 21 1 0 0 1 1 0 1 1 0 0 1 1 1 기댓값 : 7출력값 : 6
-
미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
증가 수열 만들기에서 궁금한 점이 있어 질문드립니다.
증가하는 수열을 만들기 위해반복문을 통해 좌 우를 번갈아가며 하나씩 지난 수와 비교하고 있습니다. 여기서 질문입니다.last=2left = 4right = 3 예를 들어 현재 상황이 위와 같을 경우선생님께서 짜신 코드에서는4와 3이 tmp에 추가된 후 정렬되어 수열을 만들것으로 예상되는데원래대로 하면 left 4가 수열에 추가되고 다음에 순차가 돌아간 right는 3이기 때문에 수열에 포함될 수 없게 되는거 아닌가요?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
Dev C++ 프로그램 사용 시 vector 관련 에러 발생할 경우. (질문은 아닙니다!!)
해당 내용은 질문이 아닌 저와 같은 에러가 발생하시는 분들을 위해 남긴 글입니다..! 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 버튼 누르기.저는 이와 같은 방법으로 해결했습니다.
-
해결됨SQL 코딩테스트를 위한 첫 걸음
INNER JOIN 강의 질문
안녕하세요 선생님 INNER JOIN 문제에 대해 해석이 잘안되어서 질문하게 되었습니다.. 조인하기 전에 서브쿼리를 넣어서 쿼리를 완성하는지에 대해 궁금합니다 ㅠ 문제 자체를 잘 이해 못하고 있는거 같기도한데 상세한 설명 부탁드리겠습니다...
-
미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
씨름 선수 문제 질문드립니다.
잘이해가 가지 않아 질문을 살펴보던 도중 하기와 같이 답변하신 것을 보고 질문드립니다.'''키순으로 정렬했다면183 65는 어느 누구에게도 키와 몸무게 모두 작지는 않습니다. 그래서 선발되는 것입니다.181 60은 183 65와 비교해서 키, 몸무게 모두 작기 때문에 선발되지 않습니다.179 61은 183 65와 비교해서 키, 몸무게 모두 작기 때문에 선발되지 않습니다....172 67은 키는 위에 모든 사람보다 작지만 몸무게는 위에 사람 누구에게도 작지 않습니다. 그래서 선발됩니다.170 72도 키는 위에 모든 사람보다 작지만 몸무게는 위에 사람 누구에게도 작지 않습니다. 그래서 선발됩니다.''' 만약 면접을 170 72 인 지원자가 먼저 본다면 합격자는 2인이 되는게 맞을까요? 선생님은 키순으로 정렬하여 문제를 해결하셨으나 문제에 키순으로 면접본다는 내용은 없습니다. 면접 순서에 따라 합격자 수가 변경된다면기존 주어진 순서대로 문제를 풀어야하는게 아닌가라는 생각이 들었습니다. 이에 대해 답변 부탁드립니다.감사합니다
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
1주차 개념 #4 시간복잡도 질문 있습니다.
강의를 듣고 이진탐색 시간복잡도를 살펴보기 위해 문제를 하나 풀었습니다.https://www.acmicpc.net/problem/1920 수찾기라는 문제인데 http://boj.kr/ac3378d1315b433b80567fa81531fd67위처럼 이진탐색을 재귀로 구현을 하였는데 왜 시간초과가 발생하는지 잘 이해가 안가는데 왜 그런지 자세하게 설명이 가능할까요..??
-
해결됨코딩테스트 [ ALL IN ONE ]
강의자료 노션 링크 언제 보내주시는 걸까요?
어제 노션 링크 요청드렸었는데, 혹시 언제 받아볼 수 있나요?
-
미해결it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비
강의에 나오는 문제들은 백준에도 존재하나요?
강의에 나오는 문제들은 백준에도 있나요?있다면 어떻게 검색을 해야하나요? 백준풀면서 잔디를 채우고 싶어서.. ㅎㅎ..
-
해결됨2주만에 통과하는 알고리즘 코딩테스트 (2024년)
#11653 소인수분해 문제(최적화 관련)
아래와 같이 코드를 작성하였는데 답은 맞췄지만 강의에서 말씀하신 제곱근 아이디어가 반영되어있지 않습니다.아래 코드를 더 최적화 할 수 있는 아이디어가 있나요? #11653 소인수분해 N = int(input()) divide = True while(divide): for i in range(2, N+1): if N % i == 0: print(i) N = N//i break if N == 1 : divide = False
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
따닥따닥 입력
안녕하세요 큰돌님 숫자가 따닥 따닥 붙어있는 입력을 받는 예제에서 교안(p.179)에 있는 코드를 복붙해서 했는데 출력이 안나옵니다. 혹시 한번만 확인해주실 수 있으신가요?이 상태로 계속 입력을 해도 출력이 안나오네요.. #include<bits/stdc++.h>using namespace std; int n, m, a[10][10];string s; int main(){ cin >> n >> m; for(int i = 0; i < n; i++){ cin >> s; for(int j = 0; j < m; j++){ a[i][j] = s[j] - '0'; } } for(int i = 0; i < n; i++){ for(int j = 0; j < m; j++){ cout << a[i][j]; } cout << '\n'; }}/*입력 4 41000000001110000 */
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-C 왜 틀렸을까요..?
http://boj.kr/4473182f754a49919a49607d9fc3711c 2-C 문제 왜 틀렸을까요 ㅠㅠ 비가 안 오는 부분도 고려하였고 나름 디버깅도 찍어 보았습니다.. 맞왜틀팁도 보았는데...
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-S 질문드립니다!
안녕하세요 강사님. 강의 해설은 잘 이해되었습니다! 하지만 이전에 제 풀이가 계속 출력초과로 나오는데 어디서 재귀를 탈출하지 못하고 있는지 잘 파악이 안되어 글을 남깁니다! 확인해주시면 감사하겠습니다!https://www.acmicpc.net/source/69546505
-
해결됨코딩테스트 [ ALL IN ONE ]
Hash Table 질문있습니다.
질문1. 해시테이블 (Hash Table)강의 마지막부분에서 파이썬은 딕셔너리로 잘구분되어있다고 하셨는데요. 해쉬테이블이 파이썬에서 딕셔너리인가요? 질문2. 제가 원했던 코드는 dir 라는 딕셔너리 변수에 possible 값이 있으면 그부분을 False로 적용시킬려고 했는데 왜 안되나요?질문3. 함수내부에서 print(dir)을 하면 딕셔너리가 출력이 되는데 밖에서 하면 <built-in function dir>이런식으로 출력이 됩니다. 배열은 함수 내부나 외부에서도 출력이 잘 되는데 딕셔너리는 직역변수로 인식이 되나요?질문4. for y in dir: 2번째 for문에 옆에 처럼 안하는 이유는 딕셔너리는 순번이 없어서 그런건가요?import sys sys.stdin = open("input.txt", "r") from collections import deque def two_sum(nums,target): # n=len(nums) dir={} for x in nums: dir[x]=True for y in nums: possible=target-dir[y] if possible in dir: dir[possible] = False print(dir)#{4: True, 1: True, 9: True, 7: True, 5: True, 3: True, 16: True} #제가 원했던 코드는 dir 라는 딕셔너리 변수에 possible 값이 있으면 그부분을 False로 적용시킬려고 했는데 왜 안되나요? # 아래처럼요. # {4: True, 1: True, 9: True, 7: True, 5: False, 3: True, 16: True} two_sum(nums=[4,1,9,7,5,3,16],target=14) print(dir)#<built-in function dir>
-
해결됨코딩테스트 [ ALL IN ONE ]
key + in 관련 질문입니다.
설명 감사드립니다.섹션 4 '[코테 적용] 👉 [2번 문제] key in (후반부) ' 2:45 부분을 공부중입니다.두 가지 질문이 있습니다. 1.이 내용 설명에 의하면 Big O notation에 대해for num in num_dict: => O(n)if num -1 not in num_dict: => O(1)while targer in num_dict: => O(1)이렇게 되는건가요? 2.if 또는 while + 딕셔너리 사용은 항상 Big O notation이 O(1)이 되는건가요? 아니면 상황에 따라 if 또는 while + dict의 시간복잡도가 달라질 수도 있는건가요? 감사합니다. - 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
-
해결됨[파이썬/Python] 문과생도 이해하는 DFS 알고리즘! - 입문편
11724 문제 질문
안녕하세요. 공부하다가 또 질문이 생겨 다시 한 번 질문 드립니다...리스트를 조회하는 것보다 딕셔너리를 조회하는 것이 더 빠를 거 같아서 문제의 그래프를 딕셔너리 자료형으로 바꿔주고 있는데요.제가 작성한 코드가 로컬에서 예시를 넣었을 때는 잘 되는데 백준에서는 틀린 답이라고 나옵니다..코드를 첨부하여 질문 드리고 싶은데, 멘토링 부분이 어디있는지 알려주시면 감사하겠습니다!
-
해결됨[파이썬/Python] 문과생도 이해하는 DFS 알고리즘! - 입문편
그래프 초기화
안녕하세요. 선생님 덕분에 멋진 강의를 듣고 있는 학생입니다.이제 유형 1을 다 수강했는데, graph를 초기화할 때 보통 N의 개수가 적으면 불리언 2차원 배열로 선언하고, N의 개수가 많으면 빈리스트로 구성된 2차원 리스트로 선언하는데요.그냥 모든 문제에 빈리스트로 구성된 2차원 배열을 선언하지 않는 이유가 N의 개수가 적으면 배열로 선언하고 조회하는 게 더 빠르기 때문인지 여쭤봐도 될까요?
-
미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
2번만 RuntimeError가 뜨는데요
package twopointers; import java.util.ArrayList; import java.util.Arrays; import java.util.Scanner; public class CommonElements { static ArrayList<Integer> solution(int n, int m, int[] arr, int[] arr2) { ArrayList<Integer> list = new ArrayList<>(); Arrays.sort(arr); Arrays.sort(arr2); int p1 = 0; int p2 = 0; while (p1 < n && p2 < m) { if (arr[p1] == arr2[p2]) { list.add(arr[p1]); p1++; p2++; } else if (arr[p1] < arr2[p2]) { p1++; } else { p2++; } } return list; } public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int[] arr = new int[n]; for (int i = 0; i < n; i++) { arr[i] = sc.nextInt(); } int m = sc.nextInt(); int[] arr2 = new int[n]; for (int i = 0; i < m; i++) { arr2[i] = sc.nextInt(); } for (int result : CommonElements.solution(n, m, arr, arr2)) { System.out.print(result + " "); } } } 뭐가 문제일까요??
-
미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
Array.sort 사용 구분
앞 문제에서 Collection.sort를 쓰면 문제에서 효율적이지 못하다는 댓글을 봐서 처음부터 Array.sort를 해서 정렬하는 방법을 생각을 못했는데 어떤 문제에선 사용하고 사용하지말고 구분이잘 안되는데 이럴땐 어떻게 하나요...
-
미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
아스키코드로 숫자만 추출하여 풀어 보았습니다.
자연수를 만들어야 되니 제일 첫번째가 0이 오면 안되므로 replace 정규식을 활용 했습니다.function solution(args) { const originalArray = []; for (const val of args) { if (val.charCodeAt() >= 48 && val.charCodeAt() <= 57) { originalArray.push(val); } } return originalArray.join("").replace(/^0/, ""); } console.log(solution("tge0a1h205er")); console.log(solution("g0en2T0s8eSoft"));
-
미해결2주만에 통과하는 알고리즘 코딩테스트 (2024년)
투포인터 #22988 문제 답안에서 빠진 게 있네요
투포인터 s == e 일 경우에 remain 을 1 추가 한다음에는 break 해서 while 문을 벗어나게 해주셔야 합니다. 안 그럼 그 다음 if 문에서 cnt 가 하나 추가되어 버립니다