묻고 답해요
154만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
순위 정보를
불러오고 있어요
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
효율적인 해킹 코드 질문
http://boj.kr/3362a1a378f74be69dfe31314faa485d큰돌님, 코드 작성해보았는데 효율적인 코드인지 궁금합니다 !그리고 큰돌님 코드와 제가 작성한 코드 최악의 시간 복잡도가while 반복문 -> 100,000for 반복문, dfs -> 10,000 * 10,000 = 100,000,000출력 반복문 -> 10,000 => O(100,110,000) 이 되는 거 맞는지도 궁금합니다 !
-
미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
최대수입스케쥴(PriorityQueue) 질문입니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.아래와 같이 코드를 작성하였을 때 예제에는 정상정답이 나오고, 저도 반례를 찾지 못하는데, 채점에서는 오답이라고 나옵니다.어느부분이 오답인지, 그리고 반례가 뭐가 있을지 궁금합니다.ㅠㅠ import java.util.*; public class Main { public static class schedule implements Comparable<schedule>{ int pay = 0; int day = 0; schedule(int p,int d) { this.pay = p; this.day = d; } @Override public int compareTo(schedule o) { if(this.day == o.day) return o.pay - this.pay; else return o.day - this.day; } } public void solution(List<schedule> list) { Collections.sort(list); int answer = 0; int day = list.get(0).day; Queue<Integer> queue = new PriorityQueue<>(Collections.reverseOrder()); for(schedule s : list) { if(day == s.day) { queue.offer(s.pay); } else { if(!queue.isEmpty()) { int p = queue.poll(); answer += p; } queue.offer(s.pay); day--; } } System.out.println(answer += queue.poll()); } public static void main(String[] args) { Main T = new Main(); Scanner kb = new Scanner(System.in); int n = kb.nextInt(); List<schedule> list = new ArrayList<>(); for(int i=0; i<n; i++) { int pay = kb.nextInt(); int day = kb.nextInt(); list.add(new schedule(pay, day)); } T.solution(list); } }
-
해결됨김영한의 실전 자바 - 중급 2편
new T(); 와 new Node<T>();의 차이
===================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]여기에 질문 내용을 남겨주세요. 안녕하세요, 수업을 열심히 따라가며 코드를 작성해보면서 궁금한 점이 생겨 이렇게 질문드립니다. 앞서 제네릭 부분에서 타입이레이져 방식 때문에 제네릭 타입정보는 컴파일 이후 모두 사라지고 타입변수의 상한타입으로 바뀐다고 이해하였습니다. 그래서 위 처럼 new 로 직접 타입변수 T의 인스턴스를 생성하거나 instanceof T 구문을 쓰지 못한다고 하셨습니다.컴파일 이후에는 T에 대한 정보가 없으니까요. 그런데 리스트에서 제네릭을 사용하는 부분을 보면 LinkedList<T>처럼 제네릭 타입을 활용해 클래스를 정의하였고 내부에 new Node<T>(); 와 같은 부분이 있어 위의 언급한 내용과 상충하는 것 같아 이 경우는 왜 가능한지 의문이었습니다. 구글에서 찾기 쉽지않아 직접 T를 생성하는 것(new T(); )과 Node<T>를 생성하는 것(new Node<T>(e);)의 차이를 혼자 고민해보았습니다.T를 생성하는 것은 힙영역에 T 인스턴스를 생성하는 것인데 컴파일 이후 T에 대한 정보가 전혀 없어 T 직접생성이 불가능하지만, Node<T>의 경우 Node의 인스턴스를 생성할 때 T타입인 item이 있지만 이때 T타입의 객체를 생성하는 것이 아니라 언젠가 생성될 T객체의 참조값을 담을 변수만 선언하는 것일 뿐이고 이는 컴파일 이후 T의 정보가 없어 Object 타입으로 변수 item이 선언되더라도 후에 T타입의 객체(의 참조값)가 item에 할당될때 저절로 업캐스팅이 되어 문제없이 item변수를 사용할 수 있다고 결론내렸습니다. 이렇게 생각하면 문제없는걸까요?
-
미해결자바 코딩테스트 - it 대기업 유제
채점 사이트 개설
강의 채점 사이트 안녕하세요 강사님 기존 강의인"자바 알고리즘 문제풀이 입문 :코딩테스트 대비"를 너무 잘 듣고 공부해서 강사님의 다음 강의를 의심없이 샀는데채점 사이트가 없어서 너무 불편합니다...왜 기존에는 있었는데 이번 강의에는 없는걸까요...하나 똑같이 만들어주시면 안되나요?이미 강의자료도 의심없이 받았다가 환불도 안되고..이전 강의엔 채점 사이트가 있어서... 채점 사이트가 없을 줄은 꿈에도 몰랐네요후속강의임에도 불구하고 더 불편해진 것 같아서 문의드립니다.
-
미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
문제 사이트 제출한 결과 검색
문제 사이트 제출한 결과 보는 곳에서 검색 Search Author 칸이 있던데 어떻게 검색하는건가요?제출했던 결과 중 특정 문제를 검색할 수 있는 방법이 없을까요? 감사합니다.
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
제 컴퓨터에서는 7초가 걸립니다.
https://www.acmicpc.net/source/86932466 질문 : 제 컴퓨터에서는 실행시간이 7초 걸립니다.처음에 무식하게 풀었습니다.반례를 생각하기 위해 최대 숫자인 1만을 넣었습니다.시간이 오래걸렸습니다.무려 7초.그런데 문제에서 요구하는 시간은 2초. 잘못된 풀이였구나 넘어갔습니다.그런데 도저히 도저히 안되어서 강의를 봤습니다. 제 컴퓨터에서 7초가 걸리는 강사님 코드도 제가 무식하게 푼 코드도 백준 제출을 하니 되더라구요. 허탈한 마음과 충격에 질문을 남깁니다. 컴퓨터를 껐다 키고 바로 실행시켜도 저런데 왜 저런 걸까요?요구시간이 2초이면 c++ 기준 초당 2~3억회 연산을 처리하니 대충 4억 미만 안에 연산이 끝날 것 같으면 자신있게 백준에 제출을 해야할까요?횡성수설 해서 죄송합니다. 좋은 강의 늘 감사합니다. p.s 첫 질문 드림. 블로그도 잘 보고 있습니다. CS 면접강의도 듣고있습니다. 단톡에도 있습니다. 어비스 화이팅!
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
인접행렬에서 탐색할때의 경우
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요 큰돌님! 강의를 보던중 제가 아는 지식이 이곳에 적용이 되는지 궁금해져서 질문을 남겨놓습니다.2주차 개념 4-1 인접행렬 8:00 경에 x(순회할때 j)를 중심으로 보는것보다 y(순회할때 i)를 중심으로 보는 것이 더 좋고 그 이유가 행별로 캐싱이 된다고 하셨는데요! 이때 y(순회할때 i)를 선택하는 것이 더 좋은 이유가 자세히 생각했을 때 데이터 지역성 때문에 그런것인지 의문을 가지게 되어 질문을 남겨보아요!
-
미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
모든 아나그램 찾기에서 시간복잡도
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 강사님 안녕하세요!모든 아나그램 찾기 문제에서 compareMaps에 for문이 있어서 해당 문제 시간복잡도가 O(N*M)이 되지 않나요? 그럼 결국 이중for문의 시간복잡도와 같아지는건 아닌지 궁금합니다~!
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
학습 방법 문의
안녕하세요 이제 큰돌님 강의를 듣기 시작한 취준생입니다.일단 0주차부터 순서대로 강의를 듣고있었는데 0주차의 재귀함수듣고 순열 듣다보니 이 내용이 교안 앞부분에도 없고 뭐지 하면서 일단 들었는데 교안을 쭉 다시 보니 뒤쪽에 있더군요.이 강의를 들으며 학습을 시작하기 전에 C++과 자료구조 내용이 들어있는 알고리즘 교안을 혼자서 모두 익힌 후에 강의를 듣기 시작하면 되는거고 다른 알고리즘_개념교안 이라고 되어있는 자료가 강의들으면서 참조하는 자료인건가요?0주차에 있는 개념 내용들은 교안에 있는 부분중 영상이 필요하다고 생각된 부분을 보충하신거라고 생각하면 될까요?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
7-C 질문입니다.
http://boj.kr/9eeafa902f3d4250b992929f40ba4118예제 입출력은 모두 정상적으로 동작하는데 어떤 경우에 안되는 건지 잘 모르겠습니다.cnt로 이동 횟수를 세서 dp에 기록하는 방식을 사용했습니다.
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
6-G 질문있습니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.아래 코드가 틀렸다고 나오는데 ll r = 1e18 + 4;이 부분 코드를 1e9로 바꿔서 제출하기만 하면 맞다고 나옵니다. 상한선을 저번에 풀었던 드래곤 앤 던전 문제처럼 크게 잡았는데 왜 문제가 생겼는지 모르겠습니다.시간초과가 나온거면 이해가 가는데 왜 틀렸다고 나오는지 이해가 안가네요..#include <bits/stdc++.h> using namespace std; typedef long long ll; ll x, y, z, mid, ret; bool check(ll mid) { ll new_z = (y + mid) * 100 / (x + mid); // 새로운 승률 return new_z > z; // 기존 승률과 비교 } int main() { cin >> x >> y; ll l = 1; ll r = 1e18 + 4; // 최대 범위를 현실적으로 설정 z = y * 100 / x; // 기존 승률 ret = 0; while (l <= r) { mid = (l + r) / 2; if (check(mid)) { // 승률이 증가하는 경우 ret = mid; r = mid - 1; // 더 작은 mid 값을 탐색 } else { // 승률이 증가하지 않는 경우 l = mid + 1; // 더 큰 mid 값을 탐색 } } if (ret == 0) cout << -1; else cout << ret << "\n"; return 0; }
-
해결됨38군데 합격 비법, 2025 코딩테스트 필수 알고리즘
1-4 알고리즘과 친해지기 강의에서 풀이 맞는지 확인 좀 부탁드려요~
위 화면은 강의 내용 일부입니다.그런데 주석에 저렇게 설명하셨는데 아래와 같이 진행되는 거 같아서 질문드립니다.3, 5, 6, 1, 2, 43 -> 3, 5, 6, 1, 2, 45 -> 3, 5, 6, 1, 2, 46 -> 3, 5, 6, 1, 2, 4,...이렇게 진행되는게 아닌건가 싶은데.. 확인 좀 부탁드려요.
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
용어 질문
안녕하세요. 큰돌강사님~순열이나 조합을 재귀함수로 구현할 때변경을 적용한후 DFS진입합니다.DFS를 빠져나오고 나서는 변경사항을 다시 원복시키는 코드 패턴이 보여지는데(즉, push_back() => dfs => pop_back() )이에 대한 알고리즘 용어가 따로 있는지 궁금합니다.
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
6-F 질문드립니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.보여주신 코드와 거의 비슷하게 만든 거 같은데 왜 통과가 안되는지 모르겠습니다.#include <bits/stdc++.h> using namespace std; typedef long long ll; struct A { int t, a, h; }; int n, att; ll mx, ret; A a[123459]; bool check(ll mid) { int cur_a = att; ll ph = mid; for (int i = 0; i < n; i++) { if (a[i].t == 1) { ll cnt = a[i].h / cur_a + (a[i].a % cur_a ? 1 : 0); ph -= (cnt - 1) * a[i].a; if (ph <= 0) return 0; } else if (a[i].t == 2) { cur_a += a[i].a; ph = min(mid, ph + a[i].h); } } return 1; } int main() { cin >> n >> att; for (int i = 0; i < n; i++) { cin >> a[i].t >> a[i].a >> a[i].h; } ll l = 1; ll r = 1e18 + 4; while (l <= r) { ll mid = (l + r) / 2; if (check(mid)) { r = mid - 1; ret = mid; } else { l = mid + 1; } } cout << ret; }
-
해결됨38군데 합격 비법, 2025 코딩테스트 필수 알고리즘
시간 복잡도가 얼마나 걸리는지 확인하는 방법
1. 현재 학습 진도1-10 듣고 있습니다 2. 어려움을 겪는 부분 이 코드에서 for index in range(len(alphabet_occurrence_array)) 는 N이 아니라 상수이기때문에 O(1)라고 말씀해주셨는데 해당 부분이 잘 이해 가지 않습니다.. for문이라도 정해진 숫자의 범위가 돌면 O(n)의 시간 복잡도가 아닌건가요? 만약 이렇게 이해하게 되면 for char in string: 코드에서 string도 배열에 크기에 정해진 숫자만큼만 돌게 되는데.. 헷갈립니다..! 단순히 변수의 for문이면 n 상수의 for문이면 1 이렇게 생각하면 되는건지 궁금합니다!
-
해결됨세계 대회 진출자가 알려주는 코딩테스트 A to Z (with Python)
실전 문제풀이 관련 질문
2022 KAKAO TECH INTERNSHIP 문제 중 코딩테스트 공부 문제에서 실패하는 경우가 있어서 왜 그런지 질문드리려고 합니다. 예시풀이 중 dp풀이랑 비슷하게 풀었는데 다른 점은 저는 dp[alg][cop]을 해당 alg, cop에 도달하기 위해 필요한 최소 비용으로 정의하고 마지막에 최대 alg~+30, co~ +30 중 최소값을 리턴하도록 정의했습니다. 이렇게 하니까 정확성은 다 통과하는데 효율성에서 실패하는 경우가 생기던데 왜그럴까요?def solution(alp, cop, problems): answer = 0 problems += [[0,0,1,0,1], [0,0,0,1,1]] dp = [[1000] * 181 for _ in range(181)] dp[alp][cop] = 0 goal = [alp,cop] for alp_req, cop_req, alp_rwd, cop_rwd, cost in problems: goal[0] = max(goal[0], alp_req) goal[1] = max(goal[1], cop_req) for i in range(alp, 181): for j in range(cop, 181): for alp_req, cop_req, alp_rwd, cop_rwd, cost in problems: if i >= alp_req + alp_rwd and j >= cop_req + cop_rwd: dp[i][j] = min(dp[i][j], dp[i-alp_rwd][j-cop_rwd] + cost) answer = 1000 for row in dp[goal[0]:]: answer = min(answer, min(row[goal[1]:])) return answer
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
알고리즘 교안 164page 오류제보합니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.312 ->321 입니다. 강의 항상 감사합니다~
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
1-K 질문드립니다.
안녕하세요 큰돌님! 문풀 강의를 보기전에 구현을 먼저 해보고 강의를 시청했습니다. 나름대로 문제 풀이 방식(sudo code)를 만들어서 문제를 풀고 잘 풀었다고 생각했는데 큰돌님의 풀이를 보고 비교해보니 난잡한 풀이라고 생각하게 되었어요. 알고리즘을 풀 때 어떻게 생각해야 간결하게 정확한 전략을 세울 수 있을까요...? 문제를 풀 때 큰돌님의 생각루틴과 제 코드에 대한 피드백이 궁금합니다!http://boj.kr/833f44e07f3640228c53b006c8bf0ee5
-
해결됨38군데 합격 비법, 2025 코딩테스트 필수 알고리즘
동일 값 로직 처리
1. 현재 학습 진도1-5 알고리즘과 친해지기(2) 2. 어려움을 겪는 부분# def find_max_occurred_alphabet(string): # alphabet = [0] * 26 # for i in string: # if i.isalpha(): # alphabet[ord(i) - ord('a')] += 1 # # max = alphabet[0] # index = 0 # for i in range(len(alphabet)): # if alphabet[i] > max: # max = alphabet[i] # index = i # # return chr(index+ord('a')) from collections import Counter def find_max_occurred_alphabet(string): string = [char for char in string if char.isalpha()] counter = Counter(string) print(counter) return max(counter, key=counter.get) result = find_max_occurred_alphabet print("정답 = i 현재 풀이 값 =", result("hello my name is dingcodingco")) print("정답 = e 현재 풀이 값 =", result("we love algorithm")) print("정답 = b 현재 풀이 값 =", result("best of best youtube")) 3. 시도해보신 내용 안녕하세요. 첨부한 코드 중 주석 처리한 부분은 문제를 보고 사전에 제가 작성한 코드입니다. 결과는 예상과 동일하게 출력됩니다.그 밑에는 다른 풀이 방법을 찾다가 Counter 클래스를 사용하여 작성한 코드입니다. 본 강의에서는 카운터가 동일한 경우, 기존의 값을 변경하지 않는 방식이라 i가 출력되지만, 해당 방법을 사용하면 입력 순으로 o가 출력됩니다.이 경우 최빈값을 찾아내는 코드는 맞지만, 값이 동일한 경우에 처리하는 로직이 다르기 때문에 발생한다고 이해하면 될까요?답변해주신다면 감사하겠습니다.
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
5-L 질문있습니다.
http://boj.kr/ad36bd7f8ec04337b4e4eb98ed2ecdfc이 코드는 틀린 코드이고http://boj.kr/8494f1ca7ca84fbeaa1cd47409006e9f이 코드는 맞은 코드인데요. 둘의 차이는 combi(0)으로 시작하냐 combi(-1)로 시작하냐입니다.근데 combi(-1)은 for (int i = start + 1; ...) 로 하고combi(0)은for (int i = start; ...) 해서 결국 똑같은 코드 아닌가요? 왜 combi(0)으로 하면 답이 안나오는지 모르겠습니다.
주간 인기글
순위 정보를
불러오고 있어요