묻고 답해요
160만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
왜 당연히 n=8일때 아래 가지가 2개씩 늘어나나요?
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 강의 1주차 개념 #5-2의 1분 59초 안녕하세요 큰돌님 n=4일때는 그냥 2n-1으로 7번 반복됨을 아는데 왜 당연하게 n=8일때는 아래 8개가 늘어나는지가 궁금합니다. 물론 직접 해보면 저렇게 되는것을 알고 있긴한데 어떤 이유에서 저렇게 당연하게 말씀하신게 궁금합니다.
-
해결됨독하게 C를 배운 사람을 위한 선형 자료구조
예제는 어디서 다운로드 받을 수 있나요?
안녕하세요 강사님, 현제 자료구조 강의를 수강하고 있습니다. 동영상에서 예제에 대해서 설명하시는데, 혹시 예제 코드는 어디서 다운받을 수 있을까요?
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-H 4659 비밀번호 발음하기 질문
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. http://boj.kr/4ee8d966049241338c5a85f9b7c8568b강의 없이 혼자 풀어보고 제출했는데, 테스트케이스는 다 맞는다고 나오는데, 왜 틀렸는지 모르겠어서 질문드립니다!
-
해결됨김영한의 실전 자바 - 중급 2편
[수정 건의] NodeMain3의 add(Node node, String param) 메서드에 대한 수정 건의
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]대상 강의록: 4. 컬렉션 프레임워크 - LinkedList.pdf의 p.12대상 소스 파일: NodeMain3add(Node node, String param) 메서드건의 내용:해당 부분은 아직 LinkedList에 대한 제네릭 도입 전이므로 Node 클래스에서도 item의 타입을 Object로 사용하고 있습니다.public class Node { Object item; Node next; public Node(Object item) { this.item = item; } ... }따라서 add 메서드 또한 추가할 데이터인 param을 String이 아닌, Object 타입으로 설정해야 수강생들의 이해가 쉬울 것이라고 생각합니다.// 기존 강의록 코드 private static void add(Node node, String param) { Node lastNode = getLastNode(node); lastNode.next = new Node(param); } // 수정 제안 코드 <<수정부분: String -> Object>> private static void add(Node node, Object param) { Node lastNode = getLastNode(node); lastNode.next = new Node(param); }
-
해결됨김영한의 실전 자바 - 중급 2편
강의록 오타 제보
[질문 내용]파일: 4. 컬렉션 프레임워크 - LinkedList.pdf페이지/위치: 4페이지/NodeMain1 코드11페이지/NodeMain3 코드오타 내용: System.out.println("모든 노트 탐색하기");수정 내용: System.out.println("모든 노드 탐색하기");
-
해결됨코딩테스트 [ ALL IN ONE ]
Dynamic Array 의 size 정보가 저장되는 곳
안녕하세요 좋은 강의 감사드립니다! 강의 9:20"우리는 Dynamic Array의 size를 미리 알고 있기 때문에"문장에서 궁금증이 생겼습니다. 우리는 Dynamic Array의 size를 머리속에 기억 하고 있기 때문에 a.append(4) 를 했을때 O(1)인것을 알지만컴퓨터의 경우 a.append(4)를 했을때 Dynamic Array의 size를 어떻게 알고 값을 저장할까요?? 따로 저장이 될까요? size를 아는 경우 배열 포인터(배열 변수)에 저장된 초기 주소값 + size*Byte(자료형에 따라 다름) 으로 바로 접근 가능 하여 O(1) 이라고 납득이 되지만 size를 모를 경우 마지막 데이터가 있는 주소값으로 바로 가려면 array 를 전부 훑어서 O(n)이 될 수 있지 않을까 궁금했습니다. a 라는 배열 포인터에 초기 주소값과 size 정보를 저장해놓는다.배열 포인터가 아닌 다른곳에 정보를 저장한다.array를 전부 훑는건 O(1)이다. 1번, 2번, 3번 중에 어떤 걸까요?? 그리고 검색하다 size와 capacity 에 대한 내용을 봤는데capacity가 Dynamic array에서 처음 선언할때 비어 있는 index를 포함한 크기 로 알고있습니다. 위 제가 판단한것에서 1번, 2번 일경우 size 뿐만 아니라 capacity 정보도 저장해놔야 할것 같은데 저장한다면 어디에 저장 하는 걸까요?? 저장을 안한다면(3번) 직접 빠르게 훑어보고 값을 추가 or 삭제 하는 걸까요?? 강의 후반부에 설명해 주시는 내용이라면 죄송합니다..항상 감사합니다!
-
해결됨SW 역량테스트 합격하기 A형 with C++ (Advanced Algorithm)
안녕하세요 선생님 코드트리 원자충돌(2020 하반기 오전 2번)에서 질문 있습니다.
안녕하세요 선생님원자 충돌(코드트리, 2020 하반기 오전 2번)에서 질문 있습니다.처음에 짤때 낚시왕(BOJ 17143)을 떠올리고 아래 처럼 코드를 짰는데 오답이 나옵니다.int dir=d; int dist = s%n; int sx = x; int sy = y; for(int cnt_k=0;cnt_k<dist;cnt_k++){ int nx = sx+dx[dir]; int ny = sy+dy[dir]; if(nx<0) nx=n-1; if(nx>=n) nx=0; if(ny<0) ny=n-1; if(ny>=n) ny=0; sx = nx; sy = ny; }이 부분만 선생님의 코드로 바꾸면 문제가 없어서 이 부분이 틀린 것이 확실한데 왜 오답인지 모르겠습니다 ..좋은 강의해주셔서 항상 감사드립니다 !.
-
미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
Object와 Set을 이용해 풀어봤습니다.
function solution(s) { const dic = {} s.split("").forEach((el) => { if (dic[el]) { dic[el]++ } else { dic[el] = 1 } }) const newStr = [...new Set(str.split(""))] return newStr .map((el) => { if (dic[el] && dic[el] !== 1) { return (el += dic[el]) } else { return el } }) .join("") } let str = "KKHSSSSSSSE" console.log(solution(str)) 먼저 오브젝트에 몇 개의 문자가 몇 번 등록되어있는지 저장한 후 set으로 중복을 제거해서 뼈대를 만들었습니다.그 다음으로 반복문을 이용해서 오브젝트를 탐색해 뼈대에 문자열을 합성해주는 방식으로 풀었습니다. 답안에 비해 좀 복잡한 것 같은데 놓치거나 시간,공간복잡성에서 손해가 클까요?
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
1-D 왜틀
안녕하세요, 큰돌님.http://boj.kr/d79121f090df454eb46693fcd385e6671-D 회문 문제인데, 저는 vector를 사용해서 풀어보았습니다.하지만 어떤 문자열을 넣어도 항상 1(회문)을 출력하여 틀리게 됩니다. 어느 부분이 틀린 건가요?그리고 제가 배열이 나오면 항상 벡터를 사용하려고 하는데 좋지 않은 습관일까요?
-
미해결김영한의 실전 자바 - 중급 2편
제네릭 out 반환
[질문 내용]여기서 왜 객체에서 유닛을 따로 꺼내줘야만 관련 메서드를 사용할수 있는건가요? Shuttle<T extends BioUnit>으로 Shuttle도 상한타입도 지정해줬음에도 한번 유닛으로 반환받아야 메서드를 쓸 수 있는 이유가 헷갈립니다
-
해결됨38군데 합격 비법, 2025 코딩테스트 필수 알고리즘
2- 6 보너스 요세푸스 문제
1. 현재 학습 진도 링크드 리스트를 학습하고 있습니다2. 어려움을 겪는 부분보너스 문제인 요세푸스 문제를 '링크드 리스트'를 활용하여 푸는데 어려움을 겪고 있습니다 ㅠ 3. 시도해보신 내용링크드 리스트의 보너스 문제는 링크드 리스트를 학습하는데 도움이 될만한 문제라고 생각하여 풀이하고 있는데 어려움을 겪고 있습니다. class Node: def __init__(self, data): self.data = data self.next = None class CircularLinkedList: def __init__(self): self.head = None def append(self, data): new_node = Node(data) if not self.head: self.head = new_node self.head.next = self.head else: cur = self.head while cur.next != self.head: cur = cur.next cur.next = new_node new_node.next = self.head def delete(self, prev, cur): if cur == self.head: if cur.next == self.head: # 마지막 노드일 경우 self.head = None else: self.head = cur.next prev.next = cur.next def print_all(self): if not self.head: return [] result = [] cur = self.head while True: result.append(cur.data) cur = cur.next if cur == self.head: break return result def josephus_problem(n, k): circle = CircularLinkedList() for i in range(1, n + 1): circle.append(i) result = [] cur = circle.head prev = None while circle.head: for _ in range(k - 1): prev = cur cur = cur.next result.append(cur.data) circle.delete(prev, cur) cur = prev.next if prev else None return result # 입력 처리 n, k = map(int, input().split()) result = josephus_problem(n, k) print("<" + ", ".join(map(str, result)) + ">")위와 같이 링크드 리스트의 개념을 활용하여 문제를 풀다가 어려워서 chatGPT의 도움을 받아서 변형하여 풀어봤는데도 지속적으로 런타임에러가 나는 상황입니다.이 문제를 링크드리스트로 풀 수 없는 문제인지 어떤 부분이 잘못된 것인건지 잘모르겠습니다.또한 만약 풀기 어려운 문제라면, 이정도 수준의 링크드 리스트를 활용하는 문제는 나오지 않는 것인지 이정도 수준으로 연습하면 좋을 지도 궁금합니다! 감사합니다 🙂
-
미해결더 개발자, 인터뷰 가이드
혹시 미국은 설 연휴때 어떻게 보내시나요
이런 질문도 괜찮은가요 새해 복 많이 받으시길 바랍니다 ❤
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
메모리초과 질문
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.안녕하세요! 제가 처음에 풀 때 map을 사용해서 위치, 누적경로를 담아 풀이했는데 메모리가 초과되었다고 합니다. 지레짐작으로는 경로를 계속 복사하는 과정에서 vector<int> tmp = path; // 기존 경로 복사 메모리가 누적되는거 같은데, 처음부터 이 방법이 메모리 초과이겠다..!라고 판단하는 방법이 있을까요? 아래는 제 코드입니다#include <iostream> #include <vector> #include <queue> #include <unordered_map> #include <algorithm> using namespace std; const int MAX = 100000; const int MIN = 0; int visited[MAX + 4]; struct Pair { int loc; // 현재 위치 vector<int> path; // 누적 경로 Pair(int l, vector<int> p) : loc(l), path(p) {} }; int main() { int n, m; cin >> n >> m; unordered_map<int, vector<int>> map; queue<Pair> q; vector<int> fPath; fPath.push_back(n); q.push(Pair(n, fPath)); visited[n] = 1; map[n] = fPath; while (!q.empty()) { Pair p = q.front(); q.pop(); int here = p.loc; vector<int> path = p.path; if (here == m) { break; } for (int there : {here + 1, here - 1, here * 2}) { if (there >= MIN && there <= MAX) { if (visited[there] == 0) { visited[there] = visited[here] + 1; vector<int> tmp = path; // 기존 경로 복사 tmp.push_back(there); q.push(Pair(there, tmp)); map[there] = tmp; } } } } if (n == m) { cout << 0 << endl; } else { cout << visited[m] - 1 << endl; } for (int p : map[m]) { cout << p << " "; } return 0; }
-
해결됨코딩테스트 [ ALL IN ONE ]
노션공유가 안된듯 합니다
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. icopyx@gmail.com확인 부탁 드립니다.
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
1-A 관련 질문있습니다.
안녕하십니까 http://boj.kr/ec5eb19fa58d4c81a3b511d53ee8bf34위 풀이는 제가 푼 코드인데 통과는 했지만 효율적인 코드인지는 판단이 안 되어 이렇게 풀어도 괜찮은지 여쭙고자 질문 남깁니다. 그리고, 배열을 사용할 때 array를 써야할지 vector를 써야할지 감이 안 잡히는 경우가 종종 있는데.. 어떤 기준을 잡고 쓰면 좋을까요?? 좋은 강의 감사드립니다.답변 기다리겠습니다:)
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
질문이 있습니다 begin() 함수와 [0]의 차이점
선생님 안녕하십니까 문제를 풀다가 의문이 들어서 질문을 한번 하려고 합니다.string 에서 begin()을 사용 했을 때와 [0]의 인덱스를 사용 했을때 차이점이 있나용...?
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
숨바꼭질 문제들의 범위에 반복되는 질문에 대한 생각
안녕하세요 😃 큰돌님저 또한 이 문제의 범위에 대해 궁금증이 생겨 여러 질문글 (숨바꼭질2에서 기존 10만대로 잡아져있는 다른 숨바꼭질 문제에 대한 것의 범위가 잘못된것 아닌가요라는 질문 등) 을 보던 중 질문에 대한 답변 중 최단거리로만 생각하면 안되기에 20만으로 잡아야 한다라는 답변이 이해가 가지 않아 질문을 드립니다어떻게 보면 질문도 이해가 가고 답변도 이해가 가고 서로 다 맞는 말씀을 하시는 것 같은데... 관련된 이야기들이 많아서 제 생각을 정리해 보자면지금까지 이해한 바로는 핵심은 이것입니다x2로 범위를 탈출하고 -1을 가는 것보다 -1을 먼저하고 x2를 하는 것이 더 나은데 더 넓은 범위까지 잡아줘야 하는가?예를 들어:수빈이의 위치가 50,001이고 동생의 위치가 99,999일 때:50,000 → 100,000 → 99,999 (3단계)이는 100,002 → 100,001 → 100,000 → 99,999 (4단계)보다 효율적입니다.이 예시는 항상 범위 내에서 최적의 해법을 찾을 수 있음을 보여줍니다그렇다면 문제에서 요구하는 정답은 10만 범위 안에서만 이동하는게 나으므로 강의에서 말씀하신 범위를 넘는 경우의 수가 있긴 하나 굳이 갈 이유가 없기에 해당 경우의 수는 제외해도 된다로 저는 이해를 했습니다30만으로 가도되지만 30만으로 가는 것은 가장 빠른 거리일 수가 없기 때문에 고려하지 않는 것처럼요따라서 제가 이해한 바로 내린 결론은 배우는 입장에서는 단순히 입력값의 범위가 10만으로 주어져 10만으로만 생각했다가 운좋게 넘어가는 경우가 있을 것이기에 다른 경우의 수를 생각하는 것이 좋으니 해당 포인트를 강조하는게 맞지만 다음으로 깊게 생각을 해본 단계에 이르렀다면 이 문제는 사실 10만이 넘게 잡지 않아도 된다라고 보는게 맞지 않는가? 입니다
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-Q 질문있습니다
안녕하세요, 2-Q 문제 질문있습니다.http://boj.kr/3ce7270b49e1494aa875c3b9a9f48e1c제가 제출한 코드인데요, 매번 visited배열을 초기화하면 맨 바깥쪽 공기는 중복으로 탐사하는 부분이 싫어서memset(visited,0,sizeof(visited));을 없애고,//녹이기 for(auto k : meltCheese){ questionMap[k.first][k.second]=0; visited[k.first][k.second]=0; }이렇게 녹이는 부분만 다시 visited배열을 0 으로 만들고 탐색하면 답이 다르게 나오는데 이부분이 왜 그런지 잘 모르겠습니다..!!
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3-D 불! 런타임오류 질문드립니다
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.안녕하세요.http://boj.kr/53f91af39b4f4ae490e1e0388bffd39a 15%까지 갔다가 double tree or courruption라는 런타임 오류가 뜹니다. 찾아보니까 동적 할당을 잘못 잡거나 초기화를 안 했다는 데, 애초에 동적할당을 하지 않아서,, 무슨 문제일까요? ㅠ
-
미해결김영한의 실전 자바 - 중급 2편
anotherCard.suit이 가능한 이유
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]public int compareTo(Card anotherCard) { // 숫자를 먼저 비교하고, 숫자가 같으면 마크를 비교 if (this.rank != anotherCard.rank) { return Integer.compare(this.rank, anotherCard.rank); } else { return this.suit.compareTo(anotherCard.suit); } }이 코드에서 priavte으로 선언된 rank와 suit에 anotherCard.getRank() 나 anotherCard.getSuit() 으로 접근하지 않고 anotehrCard.rank 와 anotherCard.suit 로 바로 접근할 수 있는 이유가 뭔가요??