묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결CS 지식의 정석 | 디자인패턴 네트워크 운영체제 데이터베이스 자료구조
로또번호 7개 셔플 자료구조 설명에서 설명에 대한 질문
안녕하세요 로또번호 셔플 구현 설명에서 로또번호에 필요한 로직은 "탐색"과 스왑이라고 되어있고,플로우에서도 탐색이 O(1)인 배열을 사용해야한다고 설명이 되어있더라구요근데 배열으 탐색이 O(n)이고, 구현 코드를 봐도 배열값을 참조해서 스왑핑 하는 내용이더라구요그래서 설명이 탐색이 아닌 참조가 맞지않을까 생각했습니다.혹시 제가 잘못이해한거라면 답변 부탁드립니다!
-
해결됨독하게 되새기는 C 프로그래밍
비선형 자료구조
혹시 비선형 자료구조 강의를 만드실 생각이 있으신가요? 있으면 듣고 싶네요 ㅎㅎ
-
미해결it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비
[질문은 아니고 해결법&코드 공유] deque로 풀어봤어요!
저는 37번 LRU 문제를 Deque랑 삽입 정렬로 풀었습니다.삽입 정렬은 강사님 설명대로 반복된 입력값을 정렬시킬 때 사용했습니다. deque는 캐시메모리 크기를 초과할 때 pop(제거)를 위해 사용했습니다. 처음에는 vector로 풀었는데, 이럴 경우입력값 : 1 2 3 2 6 2 3 5 7index :0 1 2 3 4vector<int> v :1 6 2 3 5에서 처음 입력됐던 1이 삭제돼야하는데, vector는 pop_back()만 있어서 앞쪽인 1이 아니라 뒤쪽인 5가 삭제됩니다. 그래서 pop_front() 혹은 pop_back()랑 push_front가 동시에 컨테이너가 없을까 찾아보다가, 양방향 입력/제거 가능한 deque를 사용했습니다!(queue도 앞으로 들어오고 뒤로 나가는 거지만 정렬하기 힘드니까 패스!) 아래 코드 첨부합니다!최근에 해시 공부하면서 익힌 iterator(반복자)도 사용했는데, iterator가 처음이신 분들은 대충 index처럼 요소 접근하는걸로 이해해주시면 됩니다!(정확히는 주소 접근이지만!) #include<iostream> #include<deque> #include<algorithm> using namespace std; int main() { int S{}, N{}; deque<int> dq; // 중복 값 정렬 cin >> S >> N; for (int i = 0; i < N; i++) { int tmp{}; cin >> tmp; // 중복값 찾기 deque<int>::iterator it = find(dq.begin(), dq.end(), tmp); if (it == dq.end()) dq.push_front(tmp); // 중복 없으면 그냥 앞에서 삽입 else { // 중복값 있다면 // (tmp = *it을 할 필요없음 : 그 값이 그 값이니까) // 하나씩 뒤로 밀기. 제일 앞쪽에 도착하면 it-1을 못하니까 반복 종료 for (it; it != dq.begin(); it--) { *it = *(it - 1); } *it = tmp; } // 제일 뒤쪽 삭제 if (dq.size() > S) dq.pop_back(); } for (int i = 0; i < dq.size(); i++) cout << dq[i] << " "; }
-
미해결기출로 대비하는 개발자 전공면접 [CS 완전정복]
Linked list의 장점
선생님 안녕하세요. Linked list의 시간 복잡도에서 질문이 있습니다. Linked list는 이론상 삽입 삭제가 O(1)이고, 실제 구현해보면 조회의 과정이 필요하기 때문에 O(n) 이라는 점 잘 이해했습니다.그러면 Array가 Linked list에 비해조회는 빠르고 (O(1) vs O(n))삽입 삭제는 동일하며 (O(n))주소를 저장 할 필요가 없어 동일한 양의 데이터를 저장시 필요한 메모리도 적습니다. (Array가 꽉 찼다고 가정)이러면 결국 Linked list를 써야하는 경우가 얼마만큼의 데이터가 들어올지 예측을 할 수 없을 때 말고 다른 경우가 있나요??감사합니다.
-
미해결
자료구조 수열의 n번째 항을 구하는 재귀알고리즘 작성
첫 번째 사진에 있는 1번 문제를 풀려고 하는데요.오늘 처음으로 '쉽게 배우는 자료구조 with 파이썬' 교재로입문을 했습니다. 그리고 문제를 풀으려고 하는데,여기서 어떤 방식을 써야할까 보다가 두 번째 사진에 있는등차수열을 이용한 재귀 알고리즘과 사진에는 없지만피보나치 수열을 이용한 알고리즘 구하기도 있습니다.그런데 해당 문제는 등차,등비수열 어느것에도 해당되지 않아서어떻게 풀어야할지 감이 1도 안 잡히네요ㅠㅠ도와주세요 고수님들!!!
-
미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
리스트를 만드는 방법
안녕하세요, 강사님. 강의 들으면서 코딩테스트 정말 잘 준비하고 있습니다. 리스트를 생성하는 방법에 대한 질문이 있습니다. 강사님께서 리스트를 생성하실 때, 가끔은 arr = [] for _ in range(10): arr.append(int(input()) 이런 식으로 빈 리스트를 생성한 후에 그 안에 요소들을 차곡차곡 채워 넣는 방식으로 생성하시고, n = 10 arr = [0]*n for i in range(10): arr[i] = int(input()) 가끔은 이런 식으로 0을 채워넣은 리스트를 생성한 후에 각각의 index를 활용하여 list의 요소를 바꿔주는 방식을 이용하시는 것을 보았는데, 두 가지 방식에 따른 효율성(시간복잡도의 유의미한 차이가 있다 등) 및 논리성(두 번째 경우 C에서 Array를 구성하듯 리스트의 공간을 미리 확보해 놓고, 그 안에 값을 채워넣는 방식이다)의 차이가 있을까요? 또, 강사님이 선호하시는 방식은 무엇인지, 그에 대한 특별한 이유가 있는지 궁금합니다!
-
해결됨it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비
Queue 자료구조 사용시 시간초과 문제
강사님, 안녕하세요. 토마토문제 testcase 4, 5에서 시간초과 오류가 발생하고 있습니다. 정답코드를 넣어봐도 같은 문제가 발생합니다. 다른 학생분들이 올린 질문에 답변하신 것을 찾아보니, 정답코드를 넣어도 시간초과가 발생하는 것은 컴퓨터 성능문제라고 하셨습니다. 그런데 다른 문제에서는 안그러는데 자꾸 queue를 사용하는 경우에만 이런 성능문제로 인한 시간초과가 발생하는데 이유가 뭔가요? queue가 다른 자료구조보다 사용하는데 시간이 많이 걸리나요? 감사합니다.
-
해결됨자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
오름차순 정렬 시
안녕하세요 강사님 알고리즘 강의 덕분에 수월하게 공부하고 있습니다. 두 배열 합치기 강의에서 간단한 Two Pointers Algorithm 알려주셨는데 그렇다면 앞으로 다른 유형의 문제들에서도 오름차순으로 정렬을 해야할 경우에 Two Pointers Algorithm을 사용할 수 있다면 sort를 사용하는 것 보다 Two Pointers Algorithm을 사용하는 것이 효율성 측면에서 조금 더 좋은 방법인가요???
-
미해결
초보주의: 어셈블리어로 길이 제한 없는 문자열을 표현할 수 있는 법이 뭐가 있을까요
질문도 대충 했으니까, 그냥 힌트만 대충 주세요. 적당히 알아먹을만큼요. 나머진 제가 고민해볼게요