안녕하세요. C++ 강의를 보고 있는데 궁금한게 있어서 질문 드립니다. Add 함수에 myArr[0]++; 와 Remove 함수에 myArr[0]--; 이해가 안갑니다. 그리고 슬라이딩 윈도우 처리부분에 int j = i - P; 이 부분에 대해서 자세히 설명 부탁드립니다. i,P랑 같은 값인데 빼면 0이고 그 다음은 i 값이 증가해서 음수가 되는데 어떻게 처리가 되는 부분인지 이해가 안갑니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 4중 for문을 사용하면 시간복잡도도 n^4가 되는 건가요?? 그렇게 된다면 이렇게 4중 for문을 사용하여 실제 코딩테스트에서도 풀이 적용할 수 있을지도 궁금합니다.
solution 함수를 작성하라는 문제가 있었는데 solution 함수하나로 모든걸 해결 해야하나요? 아니면 solution 함수안에 다른 함수를 만들어도 괜찮나요? 솔루션 함수 밖에 함수를 만드는건 안되나요? 코테 해설 강의나 유튜브 영상이 있으면 좋을거같아요 ps.4주차 까지 들었지만 들은거지 소화는 하나도 못시켜서 0솔입니다 하하.. 열심히 해야겠네요
아래 코드도 잘 짠게 맞을까요? function solution(require, direct) { let answer; let queue = ""; for (let i = 0; i < direct.length; i++) { if (require.includes(direct[i])) queue += direct[i]; } if (queue === require) answer = "YES"; else answer = "NO"; return answer; }
우선순위 큐를 써서 문제를 풀었는데 채점 지원이 안되다 보니 제 논리에 허점이 있나 확인차 질문드립니다. 도착지 정보와 현재 지점까지 오는데 걸리는 비용, 환승 횟수 정보를 가지고 있는 Path 클래스를 이용했습니다. static class Path implements Comparable<Path>{ int end, cost, t; public Path(int end, int cost, int t) { this.end = end; this.cost = cost; this.t = t; } @Override public int compareTo(Path p) { return this.cost - p.cost; } } public int solution(int n, int[][] flights, int s, int e, int k){ int answer = 0; ArrayList<ArrayList<Path>> list = new ArrayList<>(); for(int i = 0; i < n; i++) { list.add(new ArrayList<>()); } for (int[] flight : flights) { int start = flight[0]; int end = flight[1]; int cost = flight[2]; list.get(start).add(new Path(end, cost, 0)); } PriorityQueue<Path> pq = new PriorityQueue<>(); for (Path path : list.get(s)) { pq.add(path); } while(!pq.isEmpty()) { Path cur = pq.poll(); if(cur.t <= k && cur.end == e) { answer = cur.cost; break; } for (Path path : list.get(cur.end)) { pq.add(new Path(path.end, path.cost + cur.cost, cur.t + 1)); } } return answer == 0 ? -1 : answer; } 클래스를 만들지 않고 List<int[]> 로 만드시는 이유도 궁금합니다. 배열로 만들면 int[0]이 무엇이 의미하는지 알기 힘들지만, 클래스로 만들면 end, cost 등 변수 이름으로 표현하기더 쉬워서 좋은 것 같은데 알고리즘에는 부적합한가요?
안녕하세요 큰돌 강사님 놀이공원 문제를 풀다가 맞왜틀엘 빠져서 한참 고민하다 이분탐색의 hi 최댓값을 1e18로 잡은게 원인임을 찾았고 600억으로 바꾸니 정답처리 되는것 까지 확인했습니다. 강사님께서는 600억을 잡으셨고 그 이유도 이해를 했는데 1e18로 잡았을때 시간초과가 났더라면 이분탐색의 연산 횟수가 늘어서 그랬는지 분석을 해봤을텐데 "틀렸습니다"가 나와버리니 그 이유를 모르겠습니다. 이분 탐색에서 범위가 커진것이 왜 오답 처리가 된 것인지 그 이유가 궁금합니다. 1e18로 잡아서 틀린 오답코드 http://boj.kr/475081ce3a674e36b5f5941ddcd85484 600억으로 바꿔서 맞은 정답코드 http://boj.kr/9f9ba12d52124483a6b73384541c159f
안녕하세요 강사님! 강사님께서 풀이해주신 코드에서 32행과 34행에 있는 if(ok) break; 에 대해 질문드립니다. 먼저, 제가 이해한 바로 28행에서 수빈이가 동생의 위치와 같을 때, 답(turn값)을 출력할 수 있기 때문에 break를 하고, 그 즉시 24행 반복문과 qSize기반의 반복문(22행)을 반복할 필요없이 답을 출력해야 하기 위해 32행과 34행에 break가 있다고 생각하였습니다. 즉, 32행과 34행의 break는 출력하는 시간? 을 낮추기 위해 코드에 존재한다고 생각하였는데, 32행과 34행을 지우고 채점한 결과 '시간초과' 가 아닌 '틀렸습니다'라고 떴습니다. 제가 어느 부분에서 32행과 34행을 잘못 이해한건지 궁금하여서 질문드립니다!
강사님 안녕하세요, 강사님 덕분에 기업 코테를 몇군데 합격해서 너무 감사드립니다. ^^ 다만, 항상 DP쪽에서 아쉬운 점수를 받아서 약간 간당간당하게 탈락한 곳도 몇군데 있는데요, 혹시 DP문제도 따로 강의를 올려주실 계획은 없으실가요? ㅠ 지금처럼 강사님의 실전 DP 강의가 나온다면, 얼마든지 돈을 주고 구매할 의향이 있습니다~! 다시 한번 적중률 높은 강의를 올려주셔서 감사 합니다 !
안녕하세요 큰돌님 강의를 듣다 이해가 안되는게 있어 질문드립니다. bfs안에서 4개의 enqueue는 A,B의 물통을 채우고, 비우는것으로 이해했는데 enqueue(waterA, y, mp[{x,y}]); // A의 물통을 채운것 enqueue(x, waterB, mp[{x,y}]); // B의 물통을 채운것 enqueue(0, y, mp[{x,y}]); // A의 물통을 비운것 enqueue(x, 0, mp[{x,y}]); // B의 물통을 비운것 아래 enqueue 함수의 매개변수들이 왜 min(), max()로 하신건지 이해를 못하겠습니다. A -> B로 이동 B -> A로 이동 시키는것 같은데 매개변수가 왜 아래와 같이 들어가는지 이해하지 못하겠습니다. enqueue(min(x + y, waterA), max(0, x + y - waterA), mp[{x,y}]); enqueue(max(0, x + y - waterB), min(x + y, waterB), mp[{x,y}]); 혹시 추가적으로 설명해 주실수 있을까요?
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요 ~! 파이썬 초보라 선생님 코드를 그대로 따라해 실행해보고 있는데요. def dict2(nums): # 가장긴 연속된변수를 여기다 저장할거임 longest = 0 dictionary = {} for num in nums: dictionary[num] = True for n in dictionary: # n보다 앞에 있는애가 있나? # 시작점 판별하는 조건문! if n-1 not in dictionary: cnt = 1 # 시작하면 일단 카운트1 target = n + 1 while target in n: # 연속된 값있는지! target += 1 # 다음 수 찾아야돼서 +1 cnt += 1 longest = max(longest, cnt) return longest nums = [100, 4, 200, 1, 3, 2] print(dict2(nums)) 코드실행시 다음과 같은 에러가 발생합니다. TypeError: argument of type 'int' is not iterable 어떻게 해결해야될까요? 그리고 max 함수가 최댓값을 가져온다고 하던데 longest가 어차피 0이면 max(cnt)만 해도 되지 않나요?
현재 1주차 누적합문제까지 풀었는데요 문제를 풀고난 후 강사님 코드를 보면 저에 비해 너무 간결하시게 푸시거나 가독성이 좋다는게 느껴집니다 그렇다보니 강사님이 푸신 코드를 안 보고도 칠 수 있을 정도로 외우는게 맞는지 아니면 어떤 개념을 이용해서 풀수있는지 확인하고 다음 문제에서 적용하려고 노력하는게 좋을지 고민됩니다 예를들어 저는 이 문제를 http://boj.kr/33ede55138c644e8a8c18c3dd4623764 이렇게 풀었습니다 그리고 실제 기업 코테를 진행할 때는 백준이나 프로그래머스 사이트만 키게해주나요? Devc++이나 VSC사용 못하고? 이에 대한 얘기를 들어본적이 없어서 질문드립니다