묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨세계 대회 진출자가 알려주는 코딩테스트 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를 하게끔 구현했습니다.예제는 다 맞았는데 제출시 어떤부분에서 반례가 발생하는지 모르겠습니다.
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
1-O 질문 있습니다
http://boj.kr/274cddfc8f7c407dbb80ceb768312ab4이렇게 풀었는데 백준에서는 맞다고 하는데 vscode에서는 계속 값이 출력이 안됩니다. 디버깅을 위해 while(cin >> n){ cout << "n 입력 : " << n; ret = 1; cnt = 1;이런식으로 해보아도 출력되는 것이 전혀 없는데 뭐가 문제일까요..? Dev-C++로도 출력이 안됩니다...!
-
미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
이방식은 시간초과로 되지않을까요?
이방식은 예시는 잘 돌아가는데 추후 시간초과같은걸로 컷 엣지를 하지못해 틀린 답일까요?n = int(input()) data = list(map(int, input().split())) ch = [0]*n def dfs(num): if num == n: choose = 0 unchoose = 0 for i in range(n): if ch[i] == 1: choose += data[i] else: unchoose += data[i] if choose == unchoose: print("YES") exit() return ch[num] = 1 dfs(num+1) ch[num] = 0 dfs(num+1) dfs(0) print("NO")
-
미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
타임에러가 왜 나타나는지 모르겠습니다
static void solution(Queue<Point> q, int[][] box) { while (!q.isEmpty()) { // int len = q.size(); // for (int i = 0; i < len; i++) { Point tmp = q.poll(); for (int j = 0; j < 4; j++) { int nx = tmp.x + dx[j]; int ny = tmp.y + dy[j]; if (nx >= 0 && ny >= 0 && nx < n && ny < m && box[nx][ny] == 0) { box[nx][ny] = 1; q.offer(new Point(nx, ny)); dis[nx][ny] = dis[tmp.x][tmp.y] + 1; } // } } } }위에서 주석처리된 queue의 사이즈를 구한 후 레벨 탐색(?)으로 진행하게 되면 타임에러가 발생하는데 왜 발생하는지 모르겠습니다. 성능 차이가 많이 나나요 ?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
완탐-원복 강의 질문
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.1.해당 강의 4:26초에서 1과 인접한 노드는 0과 2뿐이라고 말하셨는데 3도 인접한 노드 아닌가요?? go함수내에 있는 go함수의 동작이 모두 끝난후 원복에 관한 코드를 보면 노드 2를 0상태, 즉 방문하지 않은 상태로 돌리고 v벡터에서 제거하는 동작까지는 이해를 했습니다. 하지만 그 이후에 3이 다시 들어가는 원리를 이해 못하겠습니다.
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
런타임 에러 질문있습니다!
강사님 강의듣기전에 혼자서 문제를 풀어보았는데, 인덱스 범위 에러인지 런타임 에러가 자꾸 뜹니다 ㅠ몇번 다시 보았지만 찾기가 힘들어서 문의남깁니다!https://www.acmicpc.net/source/81750296
-
미해결김영한의 실전 자바 - 중급 2편
자료구조 제네릭 타입
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]Set, List, Map 등 자바에서 제공하는 자료구조에 제네릭 타입을 특정해서 정하지 않고, Object로 사용하면 하나의 자료구조에 여러 가지 데이터 타입을 저장하고 관리할 수도 있을 것 같은데선생님 수업에서는 거의 Integer 혹은 String으로 제네릭 타입을 정하고 사용을 하시는 부분이 많더라구요.궁금한 점은 제네릭 타입을 Object로 사용하는 것이 타입 안정성 때문에 보통은 사용을 안 하는 건지 만약 사용을 한다고 할때 자료구조의 메서드 사용에는 문제 없는지 알고싶습니다.
-
해결됨독하게 C를 배운 사람을 위한 선형 자료구조
인덱스정렬 강의, 04_ListAndIndex질문드립니다.
안녕하세요 강사님04_ListAndIndex의 원본 코드의 signleList.c파일의SearchByIndexAgeRange함수의 354번째 줄 라인에서int length = idxMax - idxMin + 1; USERDATA** aSelected = malloc(sizeof(void*) * length); memcpy(aSelected, aList + idxMin, sizeof(void*) * length);와 같이 aSelected의 리턴 타입이 USERDATA** 인데왜 malloc으로 생성할때, "malloc(sizeof(void*) * length);"로왜 void*의 size만큼 생성해주는지 잘 모르겠습니다.USERDATA** aSelected = malloc(sizeof(USERDATA*) * length);다음 위의 코드처럼 "malloc(sizeof(USERDATA*) length);"즉, USERDATA*의 size가되어야 알맞지 않나요??아니면 USERDATA*와 void* 모두 크기가 8byte라서 메모리가 할당되는 크기가 같은건가요?? 제가 알고 있는 개념이 맞는걸까요??강의 잘 듣고있습니다 감사합니다.
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
range-based for loop is a C++11 extension [-Wc++11-extensions] for(int k : v) cout << k << " ";
맥북 m1 프로에서 실행하려고하는데 위 오류가 납니다.벡터없이 배열로 돌리는 코드까진 잘 돌아갔는데#include <bits/stdc++.h> using namespace std; int main() { int a[] = {1, 2, 3}; do { for(int i : a) cout << i << " "; cout << '\n'; } while(next_permutation(a, a + 3));이렇게 벡터를 추가하고나서 오류가 납니다. #include <bits/stdc++.h> using namespace std; int main() { int a[] = {1, 2, 3}; do { for(int i : a) cout << i << " "; cout << '\n'; } while(next_permutation(a, a + 3)); vector<int> v = {1, 2, 3}; do { for(int k : v) cout << k << " "; cout << '\n'; } while(next_permutation(v.begin(), v.end())); return 0; } setting.json에서 "C Cpp.default.cppStandard": "c++17", } 이설정 추가 그리고 vscode 확장 -> c++17 설정도 시도해보았는데, 오류가 지속됩니다.
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3 - l 시간초과
안녕하세요 선생님 제가 처음에 visited 대신해서 vector를 함수 parameter로 넘기는 방식으로 코드를 짜보았는데 시간초과가 나왔습니다. 그 이유가 무엇인지 알 수 있을까요?해당 vector를 visited로 바꾸자마자 바로 통과 했습니다.http://boj.kr/04db1b073dee466cad92e220313f886f
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-P 질문입니다!
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.http://boj.kr/2dc048384b444c409a1766d05a3eb71c안녕하세요!0의 갯수에서 3개를 골라 a배열에 1을 대입하고 값이 2인 경우 dfs 돌면서 0인 경우 카운트를 해 2 영역의 최솟값을 구했습니다. 출력은 처음 0의 갯수에서 0->1로 바뀐 3과 2영역의 최솟값인 mi를 빼서zero.size() - 3 - mi 로 구했는데 예제입력 2번에서 mi값이 0이 나오는데 어떤 오류인지 모르겠어 질문남깁니다.