묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3-I 질문있습니다.
http://boj.kr/b1fa6325d50644dcad7a2f7adf22d925틀린 코드이긴 하지만 왜 메모리 초과가 나는지 모르겠습니다.저는 2차원배열을 쓰지 않아서 제일 큰 배열이 visited[MAX]가 500000의 크기를 갖는데 이것만으로도 메모리 초과가 나나요..?그리고 여기서 좀만 수정하면 문제가 풀릴 것 같은데 어떻게 하면 좋을지 한 번 여쭤봐도 될까요? 이렇게는 풀수 없을까요?
-
해결됨코딩테스트 [ ALL IN ONE ]
노션 링크 신청했습니다!
금일 오전에 노션 링크 신청했습니다!확인 부탁드려요!
-
해결됨2주만에 통과하는 알고리즘 코딩테스트 (2024년)
재귀와 완전탐색의 차이에 관한 질문이 있습니다!
문제를 풀때, 재귀함수를 사용하여 백트래킹 하는 방법이 있고 완전 탐색 for 문을 돌리는 방법 두가지가 있다고 했을때, 어느것을 사용하든지 관계 없나요? 본질적으로 모든 경우의 수 탐색하는 건 똑같은데 그 방법의 차이일 뿐인가요?? 만약 그렇다면 for 문으로 일일이 코딩하기 어려운 문제들을 재귀로 푼다고 생각하면 될까요?
-
해결됨세계 대회 진출자가 알려주는 코딩테스트 A to Z (with Python)
BOJ 10870 문제 질문드립니다.
섹션 2의 재귀함수 이해하기 파트에서 풀이 1에서n을 입력하는 것과 0,1의 값을 정해주는 것 그리고 for문의 형식까지는 이해했습니다.하지만 arr = [-1] * (n + 2)가 주석을 봐도 어떤 것을 의미하는지 잘 모르겠습니다
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-D 오타 질문드립니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 강의에서 ret.push_back(dfs(i,j)); 의 조건문에서 if(a[i][j]!=1 & visited[i][j]==0)로 되어있는데 if(a[i][j]!=1 && visited[i][j]==0) 의 오타인걸까요?
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-c 코드확인부탁드립니다!
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.어디 부분이 틀렸는지 궁금해서 문의드립니다! ㅜㅜ http://boj.kr/4f5b5da439db44be965575740b0ac5ea
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
공부 방법에 대한 조언을 구하고 싶습니다
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요 큰돌님!3주차 진행 중인 학생입니다.2주차까지는 개념 듣고 교안 공부 -> 2주차 문제 풀이 -> 문제 강의 듣기 순으로 공부를 해왔고 같은 방식으로 3주차도 진행하고 있었는데, 2주차보다는 난이도가 올라가서 그런지 몇몇 문제의 접근 방식과 풀이를 고민하는 시간이 2시간을 넘어가게 됐습니다... 그래서 선생님의 해설을 참고하기 시작했는데요. 커뮤니티를 찾아보니 이렇게 해설을 참고했거나 틀린 문제의 경우 1일, 3일, 7일 간격을 두고 다시 풀어보라는 답변을 해주셨더라고요. 그래서 저도 1,3,7일 간격으로 다시 풀어볼 예정인데, 이렇게 하게 된다면 시간 내 주차별 문제를 전부 풀기가 어렵지 않을까요? 예를 들어 3주차라면, 3주차의 17문제를 이번 주 내로 풀지 못할 것 같은데 시간을 더 늘려서라도 다음 주까지 3주차를 다 체득하고 다다음주부터 4주차 진도를 나가는 게 좋을까요? 아니면 3주차의 문제를 다 풀지 못했더라도 최대한 주차에 맞춰 4주차 진도를 나가며 3주차 오답(반복풀이)을 병행하는 게 좋을까요...! 시간이 넉넉했더라면 8주 이상 걸리더라도 차근차근 학습 후 넘어가겠지만, 이번 하반기 취업이 목표라 10월 초까지 완강을 목표로 하고 있어서 어떻게 학습하는 게 좋을지 모르겠습니다. 개인적인 생각으로는 코테에 어떤 유형의 문제가 나올지 모르니, 일단 진도에 맞춰 다양한 유형을 학습하는 게 조금 더 좋지 않을까? 싶은데 선생님의 조언을 구하고 싶습니다!! +) 추가로 현재 3주차 문제(골드5~3)를 푸는데 약 2시간 정도 사용하고 있습니다. 너무 고민하는 시간이 긴 건 아닐까 싶어요... 문제마다 달랐긴 한데 로직 자체를 생각하는데만 2시간인 적도 있고, 코드 작성하고 반례 생각하는데 2시간인 적도 있습니다. 코드 짜는 시간을 제외하고 문제에 대한 로직을 '고민'하는 시간만으로는 어느정도가 적당할까요? 제 스스로가 생각해도 한 문제를 붙잡는 시간이 너무 긴 것 같아서... 이 부분도 조언 주시면 정말 감사하겠습니다!
-
해결됨[입문편] 안드로이드를 위한 코틀린(Kotlin) 문법
키보드관련 문제
안녕하세요. 플레이그라운드나 안드로이드 스튜디오에서 코틀린을 사용 문제인데요, 어느날은 방향키가 잘 먹히는데 어느 날은 방향키가 안먹히는 날이 있더라구요. 방향키 뿐만 아니라 문제가 생긴 날에는 엔터키 오른쪽에 있는 부분이 안먹히는 문제가 발생하는데 왜 그런건가요
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
13:04 방귀 문제 질문입니다.
13:04 질문이 있습니다.방구를 뀌었을 시 상하좌우로 퍼져나간다고 문제가 전제되었을 때1. 크레이지 아케이드의 물폭탄처럼 해당 지점의 상하좌우로 퍼져나가는지2. 그게 아니라면 오염받은 지점 역시 다음번에 그 지점으로 부터 오염이 이어나가져 주는지는 어떻게 구분하시나요?조금 더 직관적으로 질문을 드리자면 Connected Component로 할 경우 각 4개로 구분이 되므로1번 상황의 경우 1번째 육지에서 2행1열에 서 뀌면 한번에 오염이 되겠지만2번 상황의 경우엔 아무데나 뀌어도 전체가 오염이 될 것입니다.혹시 이런 판단을 어떻게 내리시는지 여쭤봐도 될까요?코딩테스트에서 문제에 대해서 직관적으로 이해가 항상 제일 어려운 문제인 것 같습니다. ㅜㅜ 너무 문맥 파악이 어렵네요.ps. 추가된 질문인데 한번 방귀를 뀔 때 4방향만 오염된다고 했을 때 혹시 만약 저 상황에서 최소한의 방귀로 오염시킬 수 있는 횟수를 구하라고 한다면 추가적으로 어떤 로직이 필요할까요?
-
미해결비전공자의 전공자 따라잡기 - 자료구조(with JavaScript)
숙제 : LinkedList로 Stack, Queue 구현하기
queue : enqueue, dequeue, peekclass Node { prev = null; next = null; constructor(value) { this.value = value; } } class Queue { length = 0; head = null; tail = null; enqueue(value) { // stack.push와 동일 const newNode = new Node(value); if (this.length == 0) { this.head = newNode; this.tail = newNode; } else { newNode.prev = this.tail; this.tail.next = newNode; this.tail = newNode; } this.length++; return this.length; } dequeue() { let rslt; // head.next의 prev를 null로 설정 & head 업데이트 if (this.length > 0) { if (this.length == 1) { rslt = this.head.value; this.head = null; this.tail = null; } else { rslt = this.head.value; this.head.next.prev = null; this.head = this.head.next; } this.length--; } return rslt; } peek() { return this.head?.value; } get length() { return this.length; } } const queue = new Queue(); queue.enqueue(1); queue.enqueue(3); queue.enqueue(5); queue.enqueue(4); queue.enqueue(2); console.log(queue.length); // 5 console.log(queue.dequeue()); // 1 console.log(queue.length); // 4 console.log(queue.peek()); // 3 console.log(queue.dequeue()); // 3 console.log(queue.peek()); // 5 console.log(queue.dequeue()); // 5 console.log(queue.peek()); // 4 console.log(queue.dequeue()); // 4 console.log(queue.dequeue()); // 2 console.log(queue.length); // 0 console.log(queue.dequeue()); // undefined console.log(queue.peek()); // undefined stack : push, pop, topclass Node { prev = null; next = null; constructor(value) { this.value = value; } } class Stack { length = 0; head = null; tail = null; push(value) { // 비어있으면 head = tail = newNode // 그 외엔 tail에다 추가 후 tail 업데이트 const newNode = new Node(value); if (this.length == 0) { this.head = newNode; this.tail = newNode; } else { newNode.prev = this.tail; this.tail.next = newNode; this.tail = newNode; } this.length++; return this.length; } pop() { // tail.prev를 tail로 업데이트 // 비어있거나 하나만 있으면 undefined 반환 let rslt = this.tail?.value; this.tail = !this.tail ? null : this.tail.prev; this.length = this.length - 1 < 0 ? 0 : this.length - 1; return rslt; } top() { return this.tail?.value; } get length() { return this.length; } } const stack = new Stack(); stack.push(1); stack.push(3); stack.push(5); stack.push(4); stack.push(2); console.log(stack.length); // 5 console.log(stack.pop()); // 2 console.log(stack.length); // 4 console.log(stack.top()); // 4 console.log(stack.pop()); // 4 console.log(stack.top()); // 5 console.log(stack.pop()); // 5 console.log(stack.top()); // 3 console.log(stack.pop()); // 3 console.log(stack.pop()); // 1 console.log(stack.length); // 0 console.log(stack.pop()); // undefined console.log(stack.top()); // undefined
-
해결됨2주만에 통과하는 알고리즘 코딩테스트 (2024년)
완전탐색 숫자야구 뭐가 틀린지 모르겠어요..
n = int(input()) hint = [list(map(int,input().split())) for _ in range(n)] answer = 0 #100 ~ 999 for a in range(1,10): # 100의 자리 for b in range(10): # 10의 자리 for c in range(10): # 1의 자리 if (a == b or b == c or c == a): continue cnt = 0 for arr in hint: number = list(map(int, str(arr[0]))) strike = arr[1] ball = arr[2] ball_count = 0 strike_count = 0 #스트라이크카운트 자리수,숫자 둘다 if number[0] == a: strike_count += 1 if number[1] == b: strike_count += 1 if number[2] == c: strike_count += 1 #볼카운트 자리수는 안맞고 숫자만 if a in number and number[0] != a: ball_count += 1 if b in number and number[1] != b: ball_count += 1 if c in number and number[2] != c: ball_count += 1 if ball == ball_count and strike == strike_count: cnt += 1 if cnt == n: answer += 1 print(answer)
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-J: 배열 인덱스 질문
https://www.acmicpc.net/source/share/2e4e57d962ef41a9bb4bc8f670ac158c정답 소스 중if(a[i][j] == 0){ while(a[i][j + 1] == -1){ a[i][j + 1] = cnt++; j++; } } for문에서 j < m이니, a[i][j + 1]은 배열 인덱스를 초과할 수 있는 것 아닌가요? 저는 그렇게 생각하여while(j + 1 < m && a[i][j + 1] == -1)이 맞다고 생각하였는데, 제 생각에서 뭐가 틀린 건지 모르겠습니다.
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
1차원 배열 회전 관련 질문
안녕하세요알고리즘 교안 > 1.12 코딩테스트 필수로직 > 1차원 배열회전 관련 공부를 하다 질문사항이 생겨 문의 드립니다. // 반시계방향 문제 //{1, 2, 3, 4, 5, 6} -> {1, 3, 4, 5, 2, 6} rotate(v.begin() + 1, v.begin() + 2, v.begin() + 5);// 시계방향 문제 // {1, 2, 3, 4, 5, 6, 7} -> {5, 6, 7, 1, 2, 3, 4} rotate(v.rbegin(), v.rbegin() + 2, v.rend()) // 6 7 1 2 3 4 5저는 반시계방향 문제에서는 middle값이 v.begin()이 1을 가리키고 두칸 이동해서 3을 가리킨다고 이해했고시계방향에서도 동일하게 v.rbegin()이 7을 가리키고 두칸 이동해서 5를 가리켜서 결과가 5, 6, 7, 1, 2, 3, 4 가 나올 것으로 기대했는데, 6, 7, 1, 2, 3, 4, 5 가 나오더라구요 .. 반시계방향 문제는 제가 이해한 방식으로 여러 다른 문제 풀어도 결과가 동일하게 나오는데 시계방향 문제에서는 제가 이해한 방식으로는 원하는 결과값이 나오지를 않는데, 어느 부분이 잘못된건지 알 수 있을까요?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
5-V 질문 있습니다!
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 1분 53초부터 2분 45초까지의 설명에서 각각의 배열에 10을 저장하셨는데, 이게 어떤 의미의 10인지 몰라서 제가 이해한 것이 맞는지 확인하기 위해서 질문드립니다! 제 생각에 이 내용 뒷부분에 10을 만드는 경우의 수의 횟수를 가지고 20을 만드는 경우의 수를 구하는 설명이 이어진 것을 보면 1:53~2:45에서는 10을 만드는 경우의 수로 만든 10을 A 배열에 저장하고, 따로 B 배열도 해당 경우의 수를 구해 B 배열에 저장했다고 생각이 듭니다. 그럼 이 배열을 이용해서 k = 20이 되는 경우의 수를 찾는 것인데 왜 A*B를 체크하시는지 잘 모르겠습니다. 둘을 더해서 20이 되는 경우 ret++을 하는 것이 맞지 않나요?
-
미해결김영한의 실전 자바 - 중급 2편
제가 작성한 코드 출력 결과에 의문이 있습니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]< 사전 설명 >Rectangle 객체에서 hashCode()와 equals() 둘중 equals()만 오버라이드 하였습니다. 이후 public class RectangleTest { public static void main(String[] args) { Set<Rectangle> rectangleSet = new HashSet<>(); for (int i = 0; i < 13; i++) { rectangleSet.add(new Rectangle(20, 20)); } System.out.println(rectangleSet.size()); for (Rectangle rectangle : rectangleSet) { System.out.println("rectangle = " + rectangle); } } }위와 같은 코드를 작성했을때System.out.println(rectangleSet.size()); 출력 결과가 13이 나오고for문의 출력 결과도 같은 결과가 13번 나옵니다. < 질문 >hashCode()를 오버라이드 하지 않음으로써 해시인덱스가 랜덤으로 배정되는 것으로 알고있습니다.그래서 논리적으로 같은 객체가 들어오더라도 다른 해시인덱스에 할당 되는것이 문제가 됩니다. 하지만 제가 작성한 코드와 같이 많은 for문을 돌게 될면 새로 만들어진 Rectangle 객체가 언젠가 최소 한번쯤은 해시인덱스에서 중복된 객체를 만나게되고, 중복되는 해시 인덱스의 버킷에서 equals() 메서드가 실행되어 저장이 취소될것이라고 예상했습니다.그래서 rectangleSet.size()는 13 미만이 될거라 생각했지만 아니었습니다. 오버라이드된 equals() 메서드가 실행되지 않는 이유가 무엇일까요?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
7-a, dp, 다익스트라 알고리즘관련 질문입니다!!
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 뭔가 이 문제에서 inf로 처음에 거리를 초기화해놓는것이 다익스트라 알고리즘과 비슷한것같은데,이 문제처럼 다익스트라 알고리즘도 dp의 하나의 형태라고 볼 수 있을까요?
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
7-a 관련 질문입니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요! 두 정점 사이에 간선이 있을 수도, 없을 수도 있는데,이를 생각하지 않고, 경로에서, 해당 정점을 포함한다 / 포함하지 않는다 라고 타나내면 안되는 것이 아닌가요?? 만약, 정점들의 조합을 만들었는데, 예) a(0),b(1),c(1),d(0),e(0)어떻게 간선을 연결하려 해봐도, 해당 정점처럼 간선을 구성할 수 없을 수도 있지 않나요? 아니면 혹시 어짜피 결국엔, 문제가 <모든 정점들을 지나는 경로>를 찾으라고 했으니까, 짜피 문제의 일부분 (서브그래프)에선 해당 경로가 없어도, 글로벌로는 무조건 모든 정점들이 포함딜 것이기 때문에, 순서를 상관쓰지 않고, 조합을 통해 해결할 수 있는 것인가요?? dp 처음 배우는데 어렵네용.. 감사합니다!!
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
탑다운dp와 버텀up dp에 대한 설명을 좀 더 알 수 있을까요?
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 자두나무 문제에 대한 설명에서.이 문제가 탑다운 dp란 설명에서 ' 이 재귀적인 DP는 필요한 부분의 배열만을 만든다는 것이 특징입니다. '[출처] [알고리즘 강의] 7주차. DP, 동적계획법, 다이나믹프로그래밍|작성자 큰돌 라는 문장이 이해가 가지 않습니다.필요한 부분의 배열만을 만든다는게 정확히 무슨말인가요? 또한, 탑다운 dp와 버텀업dp 위에서 아래로 간다 /아래에서 위로간다 라는 말이 완벽하게 이해가 가지 않습니다.
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3-D질문 있습니다.
두가지 질문이 있습니다.저는 J랑 F가 제자리에 있을 때는 카운트 안 하고 이동할 때마다 증가해서 J가 아예 빠져나오는 것을 카운트해야된다고 생각하였는데 제가 잘못 생각하는걸까요..?#####JF# # . . # # . . # ####--------------------------# J F # # 1 . # # 2 . # 이렇게 탈출했다고 생각하였습니다. 32. 불이 몇개 이상이다라는 조건이 없는데 한개만 가능하다라는 조건이 없기때문에 여러개가 가능하다고 생각을 해줘야되나요?? 이 문제는 생각보다 친절하지 않은 문제같은데 제 생각이 맞을까요ㅠ
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
자두 문제 설명관련 질문드립니다!
2^30이 언급될 때, 왜 2^30이 언급되는지 잘 이해가 가지 않습니다. 선생님께서 2^30에 대해 언급하실 때자두가 30초 동안 떨어지며 W=30인 것을 가정하고, 이때, 자두의 이동에 대한 모든 경우의 수를 탐색하려면 2^30이 걸린다는 것을 말씀하시는 건가요? (현재 위치 유지하거나/다른 나무로 이동)