묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-F abs사용
http://boj.kr/4b3eeeeae2ad40cb87256cc64e19824d 선생님 제가 이렇게 abs를 사용해서 절댓값을 이용하는 코드를 짜보았는데 abs가 적용된 값들이 모두 0이 됩다니다. 답답해서 질문드려봅니다!! 항상 수업 잘 듣고 있습니다!!
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
1062 가르침 기저사례 질문
안녕하세요 큰돌님! 해당 문제 go함수 내부 기저사례에 대한 질문입니다. https://www.acmicpc.net/source/share/7943b7d08dcb4d30bec01eabbf160e77 if (k < 0) return 0; if (index == 26) return count(mask); 두 가지 기저사례가 있는데 k < 0 즉, k개수보다 더 많이 가르친건 return 0으로 버리고 index가 26까지 갔을 때 count함수를 return하는데요. 2번째 return조건이 이해가 가지 않습니다. 왜 index가 꼭 26(z다음)까지 가야 return하는 것인가요?그 전에도 k가 0만되면 리턴하면 되지 않나라고 생각이 들어서요위 코드를 반대로 if (k == 0) return count(mask); if (index >= 26) return 0; 이렇게 짜서 index가 계속 늘어나는 것만 방지하고 k개만큼 글자를 배우면 그때 리턴 count하는 것이 현재로서는 좀 더 자연스럽게 이해가 됩니다. 강사님 코드를 이해하고 싶은데 go가 호출되는 경우가 너무 많아서 손코딩이 좀 힘들더라구요 ㅜ
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
[3-G] 같은 위치에 있을때 걸리는 시간
안녕하세요!강사님께서 말씀해주신 히든케이스에서같은 위치에 있을 경우 1초를 반환하도록 짜신것을 보았습니다.그런데 저는 같은 위치에 있을 경우 0초라고 생각하고 코드를 제출했었거든요! 사소한것일수도 있지만..1초라고 생각해야하는 이유가 있을 것 같은데 혹시 무엇인지 알려주실수 있나요??
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
진도를 어떻게 나가야 할까요?
안녕하세요 큰돌님. 큰돌님 강의를 듣고 있는 대학생 2학년입니다. 1주차 문제를 다 풀고, 해설강의까지 다 들었습니다. 그런데 알고리즘 공부를 시작한지 얼마되지않아, 이해가 완벽히 안된것 같습니다.이런 상황에서는 1주차 강의를 다시 복습하고 진도를 나가야 할까요, 아니면 일단 2주차 강의 진도를 나가야 할까요? 고민이 되어 질문남깁니다. 미리 답변 감사합니다 큰돌님
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
형변환 질문
http://boj.kr/672591ec309e43f294c31c0ac4630d10문제를 풀때 의문점이 있어서 질문드립니다!강의에서 ret 에 + 할때 i 를 char 형으로 형변환을 하여 더하여 주었는데 그 이유가 있을까요? 첫번째 질문은 교안에서 설명돼있듯 이미 ret의 자료형이 string 이기 때문에 따로 명시적으로 적지 않아도 묵시적으로 형변환이 일어나야 하는게 아닌지 궁금합니다.두번째 질문은 만약 명시적으로 형변환을 해야할 경우 string형이 아닌 char 형으로 해야하나요?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-E 질문
선생님 선생님 코드도 봤는데 제가 dfs bfs에 너무 심취해서 너무 힘들게 코드를 짠것 같습니다 ㅎㅎ. 제 코드 한번만 봐주시면 정말 감사하겠습니다.제 코드 질문을 comment로 해두었습니다.제 질문은 dfs함수에 설정한 값을 go함수에 어떻게 적용할 수 있는지가 질문입니다!http://boj.kr/3ca895726f3c47e09671343422cade85선생님 코드와 제 코드가 조금은 비슷해서 실력이 늘고있는거 같아 기분이 좋습니다. 수업 잘 듣고 있습니다 항상 감사합니다!
-
미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
곶감(모래시계) 문제 코드 질문입니다.
import sys sys.stdin = open("input.txt", "rt") n = int(input()) # 마당 길이 ground = list() # 마당 격자판 for _ in range(n): ground.append(list(map(int, input().split()))) m = int(input()) # 회전명령 개수 for TC in range(m): idx, direc, turn = map(int, input().split()) tmp = 0 if direc == 0: # 왼쪽 회전 tmp = ground[idx-1][:turn] del ground[idx-1][:turn] ground[idx-1] += tmp else: # 오른쪽 회전 tmp = ground[idx-1][-turn:] del ground[idx-1][-turn:] for i in range(len(tmp)): ground[idx-1].insert(i, tmp[i]) s, e = 0, n-1 ans = 0 for i in range(n): if i < n//2: ans += sum(ground[i][s:e+1]) s += 1 e -= 1 else: ans += sum(ground[i][s:e+1]) s -= 1 e += 1 print(ans) 곶감(사과나무)문제에 대한 코드를 작성해봤는데, 3번과 4번 테스트 케이스만 오답으로 나옵니다. 어느 부분이 잘못됐는지 찾지 못하여 질문드립니다!
-
미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
이렇게 푸는건 잘못됐나요?
function solution(str){ while(str.includes("()")){ str= str.replace('()','') } console.log(str) return str.length >=1 ? 'NO' : 'YES'; }
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
안녕하세요 선생님! 2-G 반례를 찾기가 힘들어 질문드립니다.
선생님과 유사하게 풀었길래 뿌듯해했는데.. 막상 제출해보니까 반례가 있는지 틀렸다고 나오네요.. 부끄럽지만 확인 부탁 드립니다! 감사합니다. http://boj.kr/ce768aeb4ccf42559e52a20beeab962e
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
재귀와 반복문 bfs와 dfs 원복과 초기화 자유자재로 구사하기
나중에 가면 잘 할 수 있겠죠? ㅠㅠ 지금은 뭔가 기준이 없네요 둘다 해보면 되겠죠?
-
미해결코딩테스트 [ ALL IN ONE ]
트리에 관해 질문 있습니다
해당 코드에서 LCA에 첫번째 인자값에 배열을 넣어주는데 LCA의 함수에서 root는 left와 right를 가지고 있습니다. 무엇인가요...
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
좌표질문
좌표에서 위로가면 y축 +1 이 아닌 -1 이유가 궁금합니다
-
미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
이렇게 풀어도 괜찮을까요?
function solution(target, arr) { let start = 0; let end = arr.legnth-1; let mid = Number.parseInt((start+end)/2); arr.sort((a,b)=>a-b); while(arr[mid]!==target){ if(arr[mid] > target) end = mid-1; else start = mid+1; mid = Number.parseInt((start+end)/2); } return mid+1; } 안녕하세요 강사님 이분검색 문제 풀이 방법에 대해 궁금증이 생겨 질문 남깁니다.문제 설명만 보고 혼자 풀어본건데 혹시 반례가 있을까요..? 이렇게 풀어도 괜찮을까요? 감사합니다.
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
[예시질문] 마지막 예시 코드 질문 있습니다.
#include <bits/stdc++.h> using namespace std; int dx[4] = {1, 0, -1, 0}; int dy[4] = {0, 1, 0, -1}; // bool m[3][3]; bool visited[3][3]; bool m[3][3] = { 1, 0, 1, 1, 0, 1, 0, 1, 1 }; // void visit(int x, int y) // { // cout << '(' << x << ", " << y << ')' << '\n'; // visited[x][y] = true; // for(int i = 0; i < 4; i++) // { // int nx = x + dx[i]; // int ny = y + dy[i]; // if(nx < 0 || nx >= 3 || ny < 0 || ny >= 3) // continue; // else // if(!visited[nx][ny] && m[nx][ny]) // visit(nx, ny); // } // } int main(void) { for(int i = 0; i < 3; i++) for(int j = 0; j < 3; j++) for(int k = 0; k < 4; k++) { int nx = i + dx[k]; int ny = j + dy[k]; if(nx < 0 || nx >= 3 || ny <0 || ny >= 3) continue; else if(!visited[nx][ny] && m[nx][ny]) { cout << '(' << nx << ", " << ny << ')' << '\n'; visited[nx][ny] = true; } } // for(int i = 0; i < 3; i++) // for(int j = 0; j < 3; j++) // cin >> m[i][j]; // visit(0, 0); return 0; }강의를 보고 제가 작성한 코드입니다. 강의 내Q. 3 * 3 맵을 입력받아야 함. 이 맵은 1과 0으로 이루어져있고 {0, 0}은 무조건 1임을 보장한다. {0, 0}부터 4방향을 기준으로 한칸씩 탐색해나가며 방문한 정점은 다시 방문하지 않으며 방문하는 좌표를 출력하는 코드. 0은 갈 수 없는 지역. 1은 갈 수 있는 지역을 구현하시오.라는 문제에 따라서 해당 코드로 구현했습니다. 해당 코드의 결과는(1, 0) (0, 2) (0, 0) (1, 2) (2, 1) (2, 2) 정확한 의도와는 다르게 구현된 부분( (0, 0) 부터 가는게 아니라서 출력 순서가 바뀜) 이 있지만 문제에 맞게 작성을 했는데요. 강사님이 작성하신 코드를 그대로 복붙한 결과, 강사님이 작성하신 코드 참조해서 작성한 코드 결과가 모두(0, 0) (1, 0)이렇게 결과가 나왔는데잘못된게 아닌가 싶어서 질문 드립니다. 혹시 제가 뭔가 빼먹었나요.현재까지 본 영상으로 DFS, BFS 에서 사용되는 핵심 부분의 일부를 빌드업으로써 설명을 잘해주셔서 이해가 빨리 됩니다. 근데 아무래도 왜 저런 결과가 나오는지 이해가 잘 안됩니다. 재귀 호출로 인해서 분명 다 조회가 될텐데 말이죠. 강의 잘 듣고 있습니다.
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
[수업 외 질문] 추가적으로 문제를 더 늘릴 생각은 있으신가요?
안녕하세요 강사님. 문제를 꾸준히는 아니더라도 가끔씩 계속해서 도전하고 있는데요. 지금 보면 문제가 많긴 하지만 더 추가하실 예정이 있는지 궁금합니다. 만약 있으시면 어디 파트가 추가될 예정인지 좀 알고 싶어요. 제 개인적인 희망은 구현 파트가 아주 많았으면 하는 것입니다.
-
미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
시간복잡도
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.안녕하세요 강사님강사님이 푸신 방법대로 하면 각 동전의 개수가 동전 종류의 개수 만큼 루프를 돌아야 해서 11(각 동전이 가질 수 있는 최대 가짓수)^10(동전 종류의 최대 개수)여서 시간복잡도가 굉장히 높아지는거 같은데 제가 계산한 시간 복잡도가 맞을까요?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
백준2178 제출 메모리 초과
http://boj.kr/9e4dc18b53ee4679be7d8a7e07c45439안녕하세요 선생님 수업 잘 듣고있습니다! 다름이 아니라 위의 코드는 제가 쓴코드인데 선생님 코드와 비교해보았을때 거의 90%이상이 일치하며 논리또한 거의 대부분이 일치한다고 느끼는데 제 코드에서 메모리초과가 발생합니다. 도저히 이유를 알 수가 없어서 이렇게 질문 올립니다 . 감사합니다!!
-
해결됨코딩테스트 [ ALL IN ONE ]
Two sum 딕셔너리(중복원소 x)
수업에서 같은 원소를 두 번 사용할 수 없다는 스스로 구현해보라고 하셔서 초보지만 코드를 작성해 봤습니다. 이렇게 해도 되는 걸까요?전 강의 온도 문제에서 enumerate 쓰신거 보고 여기에 적용해 봤습니다.def two_Sum(nums, target): memo = {} for i, v in enumerate(nums): memo[v] = i # index 저장 for i, v in enumerate(nums): find_number = target - v if find_number in memo and memo[find_number] != i: # 첫번째 for에서 저장한 index랑 i 비교해서 같지 않아야 true return True return False two_Sum(nums=[4,1,9,7,8,2], target=14)
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
재귀함수 순열 질문있습니다.
순열을 재귀함수로 호출하는 과정에서 depth의 역할에 대해 잘 이해를 못 하겠습니다.그리고 for문안에서 순서의 흐름이 이해가 잘 가지 않습니다.
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
[4-K] 반례 찾기가 어렵습니다.. ! ㅠ
#include <bits/stdc++.h> using namespace std; int T, N, M, A, B; // 체크해야할 그래프의 수, node 수, edge 수 vector<int> graph[1004]; int vis[1004]; int dfs(int here){ vis[here] = 1; // 방문 int ret = 1; if(graph[here].size()){ for(auto i : graph[here]){ if(vis[i]) continue; ret += dfs(i); } } return ret; } bool isTree(){ if(dfs(1) != N || M != (N-1)) return false; // Vertex = Edge - 1 return true; } int main(){ ios::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); cin >> T; while(T--){ cin >> N >> M; // 1부터 N까지의 노드 for(int i = 0 ; i < M ; i++){ cin >> A >> B; graph[A].push_back(B); graph[B].push_back(A); } if(isTree()){ cout << "tree"; }else{ cout << "graph"; }; for(int i = 0 ; i <= 1004 ; i++) graph[i].clear(); // for(auto i : graph) {if(i.size()) i.clear();} // 초기화. memset(vis, 0, sizeof(vis)); // T개의 그래프 개수가 주어지고, 각각의 그래프에 대해 N, M이 주어짐. // M개의 라인 동안 A,B 가 주어짐. } } // 트리의 조건. // 0) 모든 노드에 접근가능. ~ isTree() => 모든 노드에 접근해보는 dfs 만약 아니라면? -> 나가리. (개수가 N이 아니면) // Vertex = Edge - 1 같은 방식으로 푼것 같은데 아무리 해도 반례를 찾을 수가 없습니다 ㅠㅠ테스트케이스는 다 통과했는데, 1%에서 틀렸습니다가 뜨네요.. 항상 풀던 int 반환형 dfs로 했는데 왜 안되는지 이해가 안되네요 ㅠㅠ