묻고 답해요
169만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3-L 질문입니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요 선생님. 3-I 문제 질문있습니다. ---먼저 기존 실패했던 코드의 dfs입니다.void dfs(int y, int x) { for (int i = 0; i < 4; i++) { int ny = y + dy[i]; int nx = x + dx[i]; if (ny < 0 || nx < 0 || ny >= r || nx >= c) continue; if (check[a[ny][nx] - 'A']) { int size = 0; for (int i = 0; i < 26; i++) { if (check[i] > 0) size++; } ret = max(ret, size); /*cout << "ny: " << ny << " nx : " << nx << "\n"; cout << "ret : " << ret << " visited[y][x] : " << visited[y][x] << "\n";*/ continue; } check[a[ny][nx] - 'A']=1; dfs(ny, nx); check[a[ny][nx] - 'A']=0; } return; } ---강의를 본 후 성공한 코드입니다.void dfs(int y, int x,int cnt) { ret = max(ret, cnt); for (int i = 0; i < 4; i++) { int ny = y + dy[i]; int nx = x + dx[i]; if (ny < 0 || nx < 0 || ny >= r || nx >= c) continue; if (check[a[ny][nx] - 'A']) continue; check[a[ny][nx] - 'A']=1; dfs(ny, nx,cnt+1); check[a[ny][nx] - 'A']=0; } return; } 해당 문제 시간복잡도가 크게 잡으면 3^26승이라고 하셨는데 선생님의 코드가 통과하는 이유는 테스트 케이스가 부실하다고 생각하면 되는건가요? 실패 이유는 '말이 몇칸 지나왔는지 체크'할 때 for문을 통해 26회 반복문을 돌았기 때문이라고 생각되는데요.이 정도 차이가 왜 실패로 이어지는지 이해가 안됩니다! 감사합니다. 선생님
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
1-G 9996번 문제 질문합니다!
선생님 안녕하세요! 1-G (9996번)문제를 푸는데 제출 시 정답은 나오는데, 이상해서 질문 드립니다.http://boj.kr/4afd7adce3774529abedc8229fb51913해당 코드로 작성을 했는데, vscode에서 실행 후 예시 입력값을 넣고 엔터를 누른뒤 한번 더 엔터를 눌러야 마지막 출력값이 나옵니다.cin이 개행문자를 만나지 못해서 마지막 입력값이 들어오지 못하는것 같아 getline으로 바꾸고 cin 이후 cin.ignore()이나 clear을 해도 개행문자가 getline으로 들어 오는데, 뭐가 잘못됐는지 모르겠습니다..
-
미해결입문자를 위한 코딩테스트 핵심(이론과 문제풀이) [Python]
최소값의 위치
안녕하세요 저는 해당 문제를 배열 길이와 배열 요소를 input으로 입력받고 최소값의 위치를 반환하는 코드를 작성해봤는데 답이 틀리게 나오네요 반복문으로 배열 인덱스에 따른 요소값은 제대로 나오는데 무엇이 문제인가요?
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
5-Z 변형 질문 드립니다 :)
안녕하세요 선생님 🙂 최근들어 질문을 너무 많이 하는 것 같아서 정말 죄송합니다 ㅠㅠ그만큼 절실하다는 것으로 받아들여주시면 정말 감사하겠습니다 🙂 아래는 배열이 아닌 vector<pair<int, int>> 자료형으로 문제를 풀이하였습니다.하지만, 그동안 배열과 vector<pair<int, int>> 자료형을 많이 사용해서 그런지 vector<vector<int>> 자료형으로 변환을 해보려고 하고 있으나 풀이가 잘 안되더라구요 ㅠㅠ 코테를 많이 보진 않았지만 그동안 보았던 코테는 함수를 딸랑 하나놓고 함수를 채워나가는 형식이었는데요, 제가 기억하기로 vector<pair<int, int>>보다는 파라미터로 vector<vector<int>> 자료형이 많았던 것으로 기억합니다. 계속해서 연습하고는 있지만 잘 안되어서 도움 요청 드립니다 :)http://boj.kr/e6357bc26b214a5093bee0fc0e077486
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
dp테이블과 tsp의 의미
제가 n=5일때 대략적인 코드 흐름을 작성했습니다. 보라색으로 적은 것이 지금까지 방문한 지점(visited를 더 보기 쉽게 표현)입니다.맨 처음 줄에서 0->1->2->3->4 순으로 방문을 할 때 3->4 에서 tsp가 호출이 되면 tsp(4,01234) 로 호출이 되는데( visited|(1<<i)) 부분을 보기 쉽게 방문한 정점으로 표시한것입니다 ) 4->0으로 가는 weight가 2, 3->4 로가는 weight가 3이라고 가정 하면 tsp(4,01234)는 2를 반환하고 dp[3][0123]=tsp(4,01234)+ (3->4로 가는 weiht) = 2+3 =5가 저장이 되게 됩니다. 그러면 여기서 dp 테이블의 의미는 3에서 부터 시작해서 visited 되지 않은 정점들을 모두 방문하는 최적의 비용을 저장하는게 아닌가요?? tsp도 마찬가지로 here에서 출발해서 visited 되지 않은 정점들 모두 방문하는 방법 중의 최적의 비용을 리턴한다고 생각이 드는데 큰돌 강사님께서 설명하신 부분과 반대로 해석되는거 같아서 여쭤봅니다! ㅜ 그리고 dp에 대해 질문이 있습니다. 제가 이해한 바로는 완전 탐색을 하는데 너무 경우의 수가 많아 중간 중간 예전에 계산해둔 값(dp테이블 등을 이용)으로 중복된 계산을 피해 시간복잡도를 줄이는 것으로 이해했습니다. 그렇다면 이번 문제는 원래는 모든 경우의 수가 16! 절대 완탐으로 풀 수 없어서 dp 방법을 사용하는데 dp를 사용했을 때 이렇게 재귀 함수로 풀면 대략적인 시간복잡도는 계산 못하는 건가요? 보통 문제를 풀기 전에 대략적인 시간복잡도를 측정을 하고 로직을 짜기 시작하는데 이렇게 재귀함수가 들어가고 중간에 dp 테이블을 통해 중복된 계산을 피하는 로직으로 짜면 시간복잡도를 정확히 몰라 뭔가 함부로 시도를 못할거같네요 ㅠ
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
1-A 문제풀이 중 재귀함수에 RETURN
안녕하세요,1-A 문제풀이 중 재귀함수를 만들어서 푸는 방법(https://www.acmicpc.net/source/share/2da2c198ee3744e2babea1986b2fffd6) 중에makePermutation함수 마지막에 return이 왜 꼭 들어가야하는지 이해가 잘 안됩니다.return 없이 실행하면 무한루프에 빠지는데요,for(int =depth;i<n;i++)에서 i<n조건에 의해 for문이 완료되면 makePermutation도 끝나지않나요 ?? 답변 미리 감사드립니다.
-
해결됨2주만에 통과하는 알고리즘 코딩테스트 (2024년)
14719
텐트 세우기 문제 백준 14719 이 문제를어떤 식으로 접근해서 누적합으로 풀어야할지 가이드 좀 주실 수 있을까요?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
5-L 문제가 이해가 안됩니다 ㅠ
안녕하세요 선생님 🙂 문제가 이해가 안되어서 질문 드립니다. N = 4일 경우, 팀에 2명씩 속하기 때문에 arr[i][j] + arr[j][i] 차이의 최소값을 구하면 간단하게 풀어지는데요, N = 6일 경우, 팀에 3명씩 속해야 하는데, 배열만 봤을 때 팀이 이루어질 수 있는 경우의 수가 무엇인지 도통 모르겠습니다.. ㅠㅠ 문제의 힌트를 봐도 모르겠네요.. 도움 부탁드립니다 :)
-
해결됨세계 대회 진출자가 알려주는 코딩테스트 A to Z (with Python)
제공해주신 문제 풀이가 시간초과가 되어 문의드립니다!
안녕하세요 선생님! 강의 잘 듣고 있습니다.[실전 문제풀이1 : BOJ 3085 사탕 게임] 문제에서 선생님이 제공해주신 "풀이1-O(N^4)" 으로 python3 답을 제출했는데 시간 초과가 되는 걸로 나옵니다. 시간 복잡도가 O(N^4)인데 왜 시간 초과가 나는 것인지 궁금해서 문의드립니다!
-
미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
이 코드는 안되는 예제가 어떤게 있을까요..
답보다 구한 개수가 더 클 때와 같을 때를 구분해서 코드를 작성하면 정답이 아닌 것도 있는데 왜일까요?! 결국 개수가 같은 것을 찾는 것이니까 맞지 않나요...???import sys #sys.stdin = open("00.txt", "r") k, n = map(int, input().split()) lens = list(int(input()) for _ in range(k)) rt = max(lens) lt = 0 while rt >= lt: temp = (rt+lt)//2 s = 0 for i in range(k): s += lens[i] // temp if s > n: lt = temp + 1 elif s < n: rt = temp - 1 else: re = temp lt = temp + 1 print(re)
-
미해결김영한의 실전 자바 - 중급 2편
인텔리제이 먹통
인텔리제이 무료버전이 다 끝나서 다시 지우고 무료료 쓸 수있는 학생버전으로 깔았는데 그 다음부터 김영한님의 파일들이 잘 작동이 안됩니다. 일텔리제이 버전은 아래와 같습니다:IntelliJ IDEA 2024.2.1 (Ultimate Edition)Build #IU-242.21829.142, built on August 29, 2024Licensed to xxSubscription is active until September 2, 2025.For educational use only.Runtime version: 21.0.3+13-b509.11 aarch64 (JCEF 122.1.9)VM: OpenJDK 64-Bit Server VM by JetBrains s.r.o. 김영한님의 폴더를 오픈하면 소스 파일이 안뜨고 이런식으로 뜹니다 또 어쩔때는 소스파일이 다 뜨지만 run을 하면 run이 실행되고 다시 프로젝트 목록의 소스파일들이 다 사라집니다
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-O 문자열 질문드립니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요 ! 강의 도중에 강의 정답에서 입력받은 문자의 끝을 . 로 구분하는 코드가 getline(cin,s) 로 받아서 if (s==".")break; 로 되어 있는데 .일때 break 되면 while 문 박으로 나가게 되는거 아닌가요? 또 "." 로 할때와 '.' 으로 할때의 차이가 궁금합니다.
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
5-E 시작시간 기준으로 풀어보았는데 왜 틀린지 모르겠습니다.
안녕하세요!강의 잘 듣고 있습니다.제 공부 스타일은 먼저 풀어보고 강의를 듣습니다!일단 강의의 내용은 잘 이해가 되었습니다.하지만 저는 시작을 기준으로 잡고 풀었는데 제 생각에는 예외처리를 잘 해서 문제가 없다고 생각하는데 혹시 뭐가 문제인지 알 수 있을까요?백준 질문게시판에 있는 반례도 다 통과합니다..ㅠㅠhttp://boj.kr/97290f63c432442f952ce3c865ada540
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
5-F 질문있습니다 :)
안녕하세요 선생님 🙂 while문을 for문으로 변형해서 풀이해봤는데요, 어느 부분에서 잘못된건지 모르겠어서 질문드립니다.. 항상 감사합니다 :) http://boj.kr/15d96af12b3f4a27bd41562bc6cf4042
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-J 질문 있습니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요! 질문 드립니다! 정답코드 중while (a[i][j + 1] == -1){ a[i][j + 1] = cnt++; j++; }이 부분에서 a[i][j] 배열의 크기를 100으로 했을때 예제는 통과하지만 제출시 틀렸습니다로 확인되고 배열의 크기를 101 로 하게 되면 맞췄습니다로 나옵니다. j+1 이 101로 접근해서 문제가 생기는 것 같은데 배열의 크기를 늘리지 않고 a[i][j] 의 크기는 a[100][100] 으로 하고 방어 코드로 예외 처리하는 방법은 없을까요? if(j+1>100){ break; } while (a[i][j + 1] == -1){ a[i][j + 1] = cnt++; j++; }요렇게 했을 때는 틀렸다고 나옵니다!
-
미해결김영한의 실전 자바 - 중급 2편
어떻게 오버라이딩된 toString()의 형식으로 출력되는지 헷갈립니다ㅠㅠ
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예)[질문 내용]위의 코드에서 WildCardEx.printGenericV1(dogBox); 의 결과로 T = Animal{name='멍멍이', size=100} 이렇게 Animal에 오버라이딩한 toString의 형태가 출력되는지 궁금합니다...ㅠㅠ printGenericV1() 메서드에서는 box.get()을 사용하고 있지만, get() 메서드는 return 으로 그저 Dog 객체를 반환하는데 어떻게 오버라이딩 된 toString()의 형식으로 출력될 수 있는지 헷갈립니다ㅠ 기본적인 질문을 드려 죄송합니다...
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
재귀함수 질문있습니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 이거 재귀함수를 외우라고 하셨는데 swap 함수 부분이 이해가 잘 안갑니다ㅜ 이게 배열 내에 있는 원소들을 하나씩 스왑하고 makePermutation하고 다시 원위치로 스왑하는건가요? void makePermutation(int n, int r, int depth){ if(r == depth) { //solve(); print(); return; } for(int i = depth; i < n; ++i) { swap(a[i], a[depth]); makePermutation(n, r, depth +1); swap(a[i], a[depth]); }}
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
진법변환 코드 질문
10진수 n을 b진법으로 변환하는 코드에서 while(n > 1){ v.push_back(n % b); n /= b; } if(n == 1)v.push_back(1); 이 코드를 while(n >= 1){ v.push_back(n % b); n /= b; } 으로 써도 결과는 같은데 if 조건이 따로 붙은 이유가 궁금합니다!
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3-L 코드가 왜 틀렸는지 모르겠습니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.아래 코드가 테스트 케이스를 다 통과하는데 왜 틀렸는지 모르겠어요..#include <bits/stdc++.h> using namespace std; int ret, r, c, result; int dy[] = { -1, 0, 1, 0 }; int dx[] = { 0, 1, 0, -1 }; int visited[30][30]; char a[30][30]; int t[30]; void dfs(int sy, int sx) { visited[sy][sx] = 1; t[a[sy][sx]] = 1; ret++; result = max(result, ret); for (int i = 0; i < 4; i++) { int ny = sy + dy[i]; int nx = sx + dx[i]; if (ny < 0 || ny >= r || nx < 0 || nx >= c || visited[ny][nx]) continue; if (t[a[ny][nx]]) continue; dfs(ny, nx); visited[ny][nx] = 0; t[a[ny][nx]] = 0; ret--; } } int main() { cin >> r >> c; for (int i = 0; i < r; i++) { for (int j = 0; j < c; j++) { cin >> a[i][j]; } } dfs(0, 0); cout << result; }
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
5-D 질문드립니다 :)
안녕하세요 선생님 🙂 별거 아닌 문제지만 조금 더 늘여서 한번 풀어봤는데요, 출력값도 맞고 디버깅을 해봐도 문제가 없는데 이 풀이가 왜 틀렸다고 하는지 잘 모르겠습니다. 한번 봐주시면 감사하겠습니다 :) http://boj.kr/94a55f29a4664feb89f8929cf5a3a518