묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
DFS와 BFS에서 이해가 되지 않는 부분이 있습니다
안녕하세요 선생님 🙂개념 관련 질문이어서 이렇게 따로 질문 드립니다. 양해 부탁 드립니다. 근래 DFS와 BFS를 푸는 도중에 이해가 되지 않는 부분이 있어서 질문 드립니다. 가중치가 같을 경우, 가중치를 구하는 문제는 DFS가 아닌 BFS를 써야한다고 배워서 그런가보구나 하고 외우고 문제를 풀어나갔습니다. 그런데 문득, DFS로도 가중치를 구할 수 있지 않나 싶더라구요. 선생님께서 알려주신 DFS방식과는 별개로, BFS의 queue를 stack으로만 바꿔도 DFS방식이 되기 때문에 변형하여 가중치를 계산해봤습니다. 기존에 풀었던 2-A 백준 2178번 미로탐색을 stack으로 변형하여 가중치를 계산해봤더니 출력 값이 오답으로 나오더라구요. 근데 이게 이해가 되지 않습니다. BFS의 일반적인 풀이는 queue와 4방향 탐색을 이용하여 좌표 값 (ny, nx)를 queue에 push하며 visited배열의 값을 ++하는 방식이었는데요, 좌표 값을 앞에서부터 가져온다는 특징이 있었습니다. 반대로 queue를 stack으로 변형한다면, stack과 4방향 탐색을 이용하여 좌표 값 (ny, nx)를 queue에 push하며 visited배열의 값을 ++하는 방식이 될텐데요, 좌표 값을 뒤에서부터 가져온다는 차이점이 있습니다. 하지만 이러한 차이점이 있다고 하더라도, 좌표 값의 앞부터 사용하는 것이 뒤에서부터 사용하는걸로 바뀔 뿐인데 왜 오답처리가 되는지 이해가 되지 않아서 질문드립니다. 장문의 질문을 읽어주셔서 감사합니다 :)
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3-L 질문있습니다 :)
안녕하세요 선생님 🙂 DFS를 이용한 완전탐색 문제인 것을 확인하였고, 덕분에 문제없이 문제를 풀 수 있었습니다. 감사합니다 :) 문제를 한 가지 방법이 아닌 여러 방법으로 접근해보고 있는데요, BFS를 이용한 완전탐색으로 변형을 해보려고 하는데 쉽지가 않네요;; ㅎㅎ 기존의 DFS와 BFS는 가중치만 없다면 자유롭게 변형이 가능해서 당연히 가능할거라고 생각했는데요, 이번 문제는 완전탐색까지 고려하자니 기존 방식대로는 안되는 것 같습니다. 조언 주시면 정말 감사하겠습니다!!
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
1-G 질문 드립니다
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.http://boj.kr/2fabda49b9824800982906f0ee7e106a어디가 틀린지 모르겠습니다...
-
미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
08_01 합이 같은 부분 집합
왜 dfs로 풀어야하는지 잘 이해가 되지않습니다.집합의 일부분을 사용하고 value의 값이 가장 먼저 나오는 node를 찾으면 되는 문제로 판단하고 bfs로 제출했더니 런타임오류가 발생했습니다. 아직 개념이해가 부족해 잘못된 접근 방식인건지 잘모르겠습니다. 관련해서 설명부탁드겠습니다.
-
미해결김영한의 실전 자바 - 중급 2편
Card 객체의 suit
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]이번 강의를 시청하고 enum을 제대로 공부를 안했구나 느껴서 다시 중급1편을 보고 왔는데도 Card 객체에서 suit를 생성자로 값을 주입하는걸 너무 이해가 안됩니다. enum타입은 상수라서 그냥 생성자를 이용해서 넣지않고 바로 사용하면 되는거 아닌가요? compareTo, toString에 사용하기 위해 생성자를 이용해서 주입을 하신건가요?
-
미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
이 코드가 더 효율적이죠?
앞 강의인 바둑이 승차 영상을 보며 떠올렸습니다.n,m = map(int,input().split()) data = [list(map(int,input().split())) for _ in range(n)] rst = 0 tot = sum(a for a,b in data) def dfs(num,s,t,tsum): global rst if tot - tsum + s < rst: return if t > m: return if n == num: rst = max(rst,s) else: dfs(num + 1,s + data[num][0],t+data[num][1],tsum+data[num][0]) dfs(num + 1, s, t, tsum + data[num][0]) dfs(0,0,0,0) print(rst)
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
8주차 개념강의 영화수집 질문드립니다
안녕하세요큰돌님 8주차 개념강의 영화수집 문제에 궁금한 점이 있어 질문드립니다!큰돌님의 코드와 동일한 로직으로 코드를 작성했는데 자꾸만 오답으로 떠서 원인을 찾던중에 아래와 같은 원인을 발견했습니다.제 코드int t,n,m,temp; int tree[200004]; map<int,int> mp;큰돌님 코드int t, n, m, tree[200004], temp; map<int, int> mp; 단지 전역변수(tree 배열) 선언 순서만 다른데, 오답으로 채점되었습니다. (큰돌님 코드에서 전역변수 순서만 바꿔도 오답으로 채점됩니다.)전역변수 선언 순서는 로직에 영향을 받지 않는다고 알고있었는데, 영향이 가는걸까요?제가 평소에도 전역변수를 선언할때, 배열은 배열끼리 분리해서 선언하는 습관이 있어서 이렇게 선언하였는데 이유가 궁금합니다!+ 추가적으로 왜 update_idx가 100001 이어야하는지 잘 이해가 가지 않습니다..😥update_idx가 100001이면 idx 100002부터 저장되는데,i가 1부터 10만까지이니까 그 다음번 인덱스인 100001부터 저장하면 안되는건가요?코드 : https://www.acmicpc.net/source/81853752문제: https://www.acmicpc.net/problem/3653
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
치킨집이 좌표의 갯수가 입력한 m보다 적을때는 고려하지 않아도 되나요?
5 50 0 1 0 0 0 0 2 0 1 0 1 2 0 0 0 0 1 0 0 0 0 0 0 2이런 입력값을 넣었더니 값이 987654321이 나왔습니다.이런 경우는 따로 처리 해주지 않아도 되나요?
-
미해결김영한의 실전 자바 - 중급 2편
정적 메서드 사용 시 public 여부
private 으로 사용하는 경우는 명확히 붙여주는거같은데 public 의 경우 붙이는 경우도 있고 안 붙이는 경우도 있는 것 같아서 질문드립니다. 혹시 기준이 있을까요?
-
해결됨세계 대회 진출자가 알려주는 코딩테스트 A to Z (with Python)
위치를 데스크톱에 두었는데 cmd+b로 빌드를 해봐도 결과값이 안 나옵니다..!
안녕하세요, 강의를 듣고 계신 여러분!여러분의 학습을 돕기 위해 질문 안내를 드리고자 합니다. 위치를 데스크톱에 두었는데 cmd+b로 빌드를 해봐도 결과값이 안 나옵니다..!1. chatGPT를 이용해보기단순한 의문은 chatGPT를 이용해도 해답을 찾을 수 있는 경우가 종종 있습니다! 2. 강의의 어떤 부분에 대한 질문이고, 어떤 부분이 궁금한지 명확히 알려주세요!강의의 어느 파트에서 의문을 느끼고, 어떤 부분이 궁금한지를 명확히 제시해 주시면 답변에 도움이 됩니다!자신은 어떻게 이해했는지 또한 적어주면 좋습니다! ex) 섹션5의 '그래프 순회 (DFS & BFS) [개념]' 강의에서 DFS와 BFS 모두 그래프의 모든 노드를 탐색하는 알고리즘이라고 하셨고 시간 복잡도 또한 똑같다고 이해했습니다. 그러면 DFS와 BFS 중에서 어떤 알고리즘이 더 효율적인지 구별하는 것은 의미가 없는 것일까요? 어느 파트섹션5의 '그래프 순회 (DFS & BFS) [개념]' 강의자신은 어떻게 이해했는지DFS와 BFS 모두 그래프의 모든 노드를 탐색하는 알고리즘이라고 하셨고 시간 복잡도 또한 똑같다고 이해어떤 부분이 궁금한지 DFS와 BFS 중에서 어떤 알고리즘이 더 효율적인지 구별하는 것은 의미가 없는 것일까요?
-
해결됨세계 대회 진출자가 알려주는 코딩테스트 A to Z (with Python)
좋은 풀이란 무엇일까요?
안녕하세요, 문제를 푸는 도중에 갑자기 궁금증이 생겨 질문 드립니다.4779 재귀문제를 푸는데, 예제 출력을 분석하지 않은? 상태에서 문제만 가지고 직관적으로 문제를 해결하려 했습니다.먼저 선을 만들고, 선을 3으로 나누면서 몫이 0이 되면 선을 리턴하고, 그렇지 않으면 계속 나누는 방법을 생각했습니다.def cantor(n): line = '-' * (3 ** n) def divide(part): if len(part) == 1: return part N = len(part) // 3 return divide(part[:N]) + ' ' * N + divide(part[-N:]) return divide(line) n = int(input()) result = cantor(n) print(result)강의에서는 예제 출력을 보고 케이스마다 공백이 있는 것을 확인하여 공백에 3^(k-1)을 넣어줘서 푸셨는데, func() + 공백 + func() 형식으로 recursive case를 푸는 방법은 전혀 생각이 안났습니다.경험이 많이 없어서 강의대로 푸는 방법이나 스킬을 익혀야 하는지, 아니면 직관적으로 푸는게 좋은지 궁금합니다.직관적으로 푸는게 나쁜건 아닌데 강의대로 푸는게 더 구현이 편한 것 같기도 해서 질문드려요.좋은 강의 감사드립니다 🙂
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
1-N 질문 있습니다.
4분 30초쯤에 log64부분이 이해가 안되는 사람은 시간 복잡도 관련되어서 보고 오라고 하셨는데 시간복잡도에서 재귀함수 관련돼서는 몇번 중복되느냐에 따라 ()^n의 복잡도를 가진다는 이야기만 있는데 혹시 다른 부분에 언급 되어 있을까요? 제가 못찾는 걸까요ㅠㅠ 어디 부분을 봐야되는 것일까요?왜 log2 64인지 이해가 잘 되지 않습니다ㅠ
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
4-O 질문있습니다
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.http://boj.kr/a5a4b9c232c94d43bbdb5a357da579fb안녕하세요!해당 문제 ' ( ' 이 들어오면 stack에 푸시하고 ' ) ' 이 들어올 경우' ( ' 인 경우 pop, cnt 2증가, / 2. 빈 스택이었을 경우 맥스 값을 갱신하고 cnt=0으로 설정해주었습니다틀렸다고 나오는데 어떤 반례가 있는지 궁금합니다.. 또한 어떻게 고치면 좋을지 여쭤봅니다 감사합니다 ^^
-
미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
이렇게 풀어도 되나요?
n,k = map(int, input().split()) data = list(map(int, input().split())) m = int(input()) cnt = 0 def dfs(l,s,c): global cnt if l == n: if c == k: if s % m == 0: cnt += 1 return dfs(l+1,s+data[l],c+1) dfs(l + 1, s, c) dfs(0,0,0) print(cnt) 이렇게 풀어도 되나요?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-J 질문드립니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.https://www.acmicpc.net/source/81782607여기서 제가 짠 코드처럼 입력받는 반복문을 돌릴때입력을 받고, 그 값을 비교하여서 바로 그 Y,X 위치에 값을 대입하는 것은 안되는 건가요?!입력, 거리 값 대입 반복문 두개를 돌리는 코드로 설명하셨는데혹시 이유가 있나해서 여쭤봅니다!
-
해결됨세계 대회 진출자가 알려주는 코딩테스트 A to Z (with Python)
BOJ1461 제일 먼 곳은 가장 나중에 가는 것이 이득아닌가요?
먼 곳을 먼저가게 되면 돌아오는 만큼의 거리를 손해보게 되는데 가장 먼 곳을 나중에 가는 게 이득이 아닌가해서 질문을 남겨봅니다.
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
강의 교본 중 lower_bound() 함수 질문드립니다!
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요main함수 2번쨰 라인질문입니다.제 사고과정에서는 첫번쨰, lower_bond함수가 이터레이터를 반환하고두번쨰, 그걸 역참조해서 요소값(=3)이 됐고세번쨰 , 그 요소값의 주소를 한게 &* 연산이니까 메모리 주소끼리 뺴면 8이라고 생각했습니다.(int형 4바이트씩 2칸 차이이므로)왜 인덱스차이인 2로 나왔는지 추가 설명좀 부탁드립니다 큰돌님 ps) 아래처럼 출력햇을떄 주소값으로 나오는거까지 확인햇는데주소값끼리 뺏는데 어떻게 인덱스차이인 2가 나오는지 궁금합니다 ( int형 4바이트 * 2 해서 8이 아닌..)
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
while문을 돌릴때 s.top이 나오는 방식에 대해 설명 부탁드립니다.
안녕하세요. 너무 기본적인 질문이지만 ㅜㅜ 이해가 가지 않아서 이렇게 질문을 드립니다.디버그를 돌려 보았을때 while문 안에서 s.top()을 찍어보았더니 0, 2, 1 이런 순서로 나왔습니다.그런데 이미 for문은 i 3번째 까지 모두 돌아간 상태인데ret[1]의 순서가 어떻게 다시 올 수 있는걸까요?ret[0] = a[1]ret[2] = a[3]여기까지는 이해를 했는데 ret[1] = ??? 이 부분이 이해가 가질 않습니다.너무 기본적인 질문인데 뜬금없이 이 부분이 이해가 가지 않아서 당황스러워 이렇게 질문 드립니다 ㅜ
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-T 질문있습니다
http://boj.kr/4b3abb45ebbc439d9e4c7f566089586e오큰수를 찾는 과정을처음부터 쭉 찾아나가다가 왼쪽에 나보다 작은수가 있다면 스택에 넣는다.나보다 큰수가 나온다면 스택에 저장된 크기만큼 해당 숫자를 출력한다.만약 나보다 큰수가 한번도 안나온다면 -1을 출력한다.의 과정으로 진행하였습니다.예시답안도 정상적으로 나왔는데 왜 틀린건지 어떤 논리적 오류가 발생했는지 궁금합니다
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-R 질문있습니다
http://boj.kr/ecb100ac42614c8ea69e9d8d99a8d7c6트리를 스트럭트로 만들어서 삭제할때는 continue를 하게끔 구현했습니다.예제는 다 맞았는데 제출시 어떤부분에서 반례가 발생하는지 모르겠습니다.