묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
return; 유무
public static void DFS(int index, int sum) { if (sum > C) { return; } if (index == N) { answer = Math.max(answer, sum); return; } else { DFS(index+1, sum+arr[index]); DFS(index+1, sum); } }if(index == N) {} << 여기에서 강사님은 return;을 따로 쓰지 않으셨던데 return; 을 쓰거나 쓰지 않는 기준이 따로 있는건가요 ?? 어차피 저쪽으로 가게된다면 맨 마지막 줄이기 때문에 따로 return; 을 작성하지 않으신건가요 ?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
5-T 질문있습니다..!
안녕하세요!! 이 문제 해설 코드를 보다가 궁금한 점이 생겨서 질문 드립니다.상어가 이동하고 한칸에 두마리가 있을 때 큰 상어가 나머지 상어를 먹는 부분인데요, 제가 잘못 이해하고 있는 건가 싶은게 있습니다. 코드 67번째 줄 부분인데요. # i는 1부터 M까지 if(temp[ny][nx]) { if(a[temp[ny][nx]].z < a[i].z) { a[temp[ny][nx]].death = 1; temp[ny][nx] = i; } else a[i].death = 1; } else temp[ny][nx] = i;이때 i가 1인 경우에도 이미 상어가 있는 곳으로 이동하는 경우도 있을 수 있지 않나요?제가 잘못 이해하고 있는건지.. 고민하다가 질문드립니다. 감사합니다!
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
5-H 강의 질문 입니다.
5-H 풀이 강의투포인트 개념적용되는 문제로,중복되는 숫자가 나올때까지 e 를 증가시키고중복되는 수가 나오면 s 를 증가시키는 개념인 것은 이해를 했습니다만,s/e 가 변화해가면서 실질적으로 경우의 수를 산출하는 디테일한 부분에서 설명하신 내용만으로는 이해되지 않는 부분이 있어 질문 남깁니다. 4:41 경에1을 포함하는 집합을 다 빼야한다고 말씀해주셨는데요.말씀하신 문맥 흐름 상으로만 보면 경우의수에서 뺀다는 뜻으로 이해가 될 수가 있을 것 같습니다.코드상 ret 에는 아래와 같이 더해주는데 ret+=(e-s);뺀다는 표현이 어떤 의미인지 확인 부탁드립니다.코드 기반으로 제가 이해한 것은e = 3, s = 0 인 경우 (e-s) = 3 이고,1 / 12 / 123 에 대한 경우의 수를 ret 에다가 더해주는 것으로 저는 이해했습니다. 4:59 경에s=1 이 되면서 "이 구간(=갈색구간?)" 이 완성되는거라고 하셨는데, s 가 0 에서 1 이 되면서 비로소 2 / 3 / 1 구간 설정이 되는것인데, s=1 이 되고 2 / 3 / 1 구간에 대한 경우의 수를 확인할수있게 되는 것으로 보이는데요완성되었다는 표현이 어떤것을 의미하는것인가요?
-
미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
missing return statement 관련 질문 드립니다.
강사님이 강의에서 짜주신 코드처럼while (!q.isEmpty())로 하면 강의에서 보여주신 것처럼 return 이 따로 없을경우 에러가 나는데 (그래서 강의에서는 따로 return 0; 해주셨어요)while (true)로 하면 따로 return 이 없어도 에러가 안납니당 ,,혹시 while (true) 일때는 return 이 강의에서처럼 따로 없어도 에러가 안나는 이유가 있나요 ..? BFS 함수만 첨부하면 다음과 같습니닷// 방법3. BFS 상태트리탐색 (최단거리 BFS) - (2) : 로직 자체는 방법2와 동일, 배열 사용 및 코드 리팩토링 ! public static int BFS2(int S, int E) { Queue<Integer> q = new LinkedList<>(); int[] check = new int[10001]; int[] go = {-1, 1, 5}; // = 한 번의 점프로 앞으로 1, 뒤로 1, 앞으로 5를 이동할 수 있다. // 0번째 세팅 q.offer(S); check[S] = 1; int level = 0; // while (!q.isEmpty()) { while (true) { int size = q.size(); for (int i=0; i<size; i++) { int tmp = q.poll(); // if (tmp == E) { // return level; // } for (int j=0; j<go.length; j++) { int nx = tmp + go[j]; if (nx == E) { return level + 1; } if (check[nx]==0 && 1<=nx && nx<=10000) { q.offer(nx); check[nx] = 1; } } } level++; } }
-
미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
boolean에만 static이 안 붙는 이유가 있나요 ?
강사님이 작성하신 코드에서DFS 함수 위에 나머지는 다 앞에 static 붙여서 정적변수로 해놓으셨는데boolean flag = false; 만 static이 안 붙여져있더라구여boolean 형에만 static을 안 붙이신 이유가 있으신가여?DFS 함수 내에서만 사용되기 때문에 안 붙이신 건가요 ?
-
미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
챕터8 - P01_합이같은부분집합_DFS_아마존인터뷰 관련 질문입니다.
강의 듣기 전, 혼자 풀어볼 때 코드를 이렇게 짰는데 이것도 맞는 풀이일까요 ...?import java.util.*; import java.io.*; /* N개의 원소로 구성된 자연수 집합이 주어지면, 이 집합을 두 개의 부분집합으로 나누었을 때 두 부분집합의 원소의 합이 서로 같은 경우가 존재하면 “YES"를 출력하고, 그렇지 않으면 ”NO"를 출력하는 프로그램을 작성하세요. 둘로 나뉘는 두 부분집합은 서로소 집합이며, 두 부분집합을 합하면 입력으로 주어진 원래의 집합이 되어 합니다. 예를 들어 {1, 3, 5, 6, 7, 10}이 입력되면 {1, 3, 5, 7} = {6, 10} 으로 두 부분집합의 합이 16으로 같은 경우가 존재하는 것을 알 수 있다. ex. 6 1 3 5 6 7 10 -> YES */ public class P01_합이같은부분집합_DFS_아마존인터뷰 { static int total; static int[] arr; static String answer; static int index; static int sum; static int N; public static void main(String[] args) throws Exception { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); N = Integer.parseInt(br.readLine()); arr = new int[N]; StringTokenizer st = new StringTokenizer(br.readLine()); total = 0; for (int i=0; i<N; i++) { arr[i] = Integer.parseInt(st.nextToken()); total += arr[i]; } index = 0; sum = 0; answer = "NO"; DFS(index); System.out.println(answer); } public static void DFS(int index) { if (sum*2 > total || index==N) { return; } else { sum += arr[index]; if (sum*2 == total) { answer = "YES"; return; } DFS(index+1); sum -= arr[index]; DFS(index+1); } } } 채점 사이트에서 통과하기는 하는데 이 풀이가 맞아서 통과한건지 아님 운좋게(?) 테스트 케이스 5개가 다 맞아서 통과한건지 뭔가 풀이에 대한 확신이 없어서요 .. !
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2주차는 교안에 원래 없는건가요?
그래프 내용이 없네요 ㅠㅠ 그냥 화면에 있는거 받아적으면 되나요?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
연구소 조합 재귀풀이
안녕하세요 큰돌님.강의 너무나도 잘 보며 공부하고 있습니다!2-p 연구소 조합을 재귀로 작성해 보았습니다.for문으로 조합을 구하는것과 별로 다른것이 없는거 같은데 재귀로 구하니 백준 2번째 테케가 틀리게 나옵니다! 시간되실때 봐주시면 정말 감사드리겠습니다!http://boj.kr/7ee04a6b382f416abe6647adff8912c6
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
4-J질문
http://boj.kr/b293b7352cda4189a70ce187abf9f9420퍼에서 바로 틀렸습니다 가 계속 뜨는데 어디가 잘못된건지 모르겠습니다. 한줄한줄 보기도하고 TC다 넣어봤는데 이상이 없었습니다
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
5-E 문제 다른 풀이 방법 질문입니다.
강사님 안녕하세요,5-E (1931 - 회의실 배정) 문제를저는 회의 start 시간 기준 오름차순 sort + stack 이용하여 풀어보았는데요. 제 생각에는 맞을 것 같은데 왜 틀리게 나오는지 모르겠어서요...http://boj.kr/17216518de8a498bb29034d7e4d52877어떤 부분이 틀렸는지 봐주실 수 있을까요..
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
7-B 풀이 질문입니다.
선생님 풀이에서 궁금한 부분이 있어 질문을 남기게 되었습니다.dp[1][2][0] = 1; 문제에서 (1,2)까지 가로 파이프가 있다고했습니다.코드에서는 y,x 순으로 배열을 작성하였으므로 dp[2][1][0]=1을 초기값으로 하는것이 맞다고 생각되는데 그렇게 하면 정답이 맞지 않습니다.저 부분에 대한 선생님 설명을 듣고싶습니다.추가 ) x,y 순으로 배열을 작성하여 코드를 작성하였는데요, 이때에는 정답이 틀리고 이 코드에서 dp[2][1][0]=1로 초기값 설정하였을때 정답이 나오는것 같습니다. https://www.acmicpc.net/source/57275157
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
5-B 풀의 강의 질문 입니다
강사님 안녕하세요,5-B 문제풀의 강의 5:28 부근에서 설명을 해주실 때,stk.top() 이 폭발 문자열 첫번째 문자열과 같은 경우를 예를 들며 stk.top() 이 문자 "C" 가 검출되었을때 조건문이하가 실행되는 것으로 말씀해주셨는데요if(stk.size() >= T.size() && stk.top() == T[T.size() - 1])조건문 에서 stk.top() 의 문자가 폭발 문자열의 마지막 문자로 검출되었을때 if 조건문 참이 되어서 실행이 되는 것으로 이해했고 그게 맞는 것 같은데해당 부분 설명하시는 부분에 수정이 필요할 것 같습니다.
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-O 질문
안녕하세요 큰돌님!스택문제를 풀다 예제는 다 맞는데 틀렸다고 하여 질문드립니다!강의를 봤는데도 어디서 틀렸는지 모르겠습니다ㅠㅜ시간되실때 한번 봐주시면 감사드리겠습니다!http://boj.kr/1ee778d376d24cc1b2a4c785d546212d
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
4-I질문
http://boj.kr/6565060a249d47b38645c305c4f61a0f 이 코드 왜 틀린건지 모르겠습니다...
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
1-G 백준9996번 반례
큰돌님 이렇게 제가 코드를 작성해보았는데 반례를 못찾겠습니다ㅜㅜ 로직은 큰돌님 강의에서 설명해주신거랑 비슷합니다#include <iostream> #include <vector> #include <cstring> using namespace std; vector<string> split(string input, string delimiter) { vector<string> ret; long long pos = 0; string token = ""; while ((pos = input.find(delimiter)) != string::npos) { token = input.substr(0, pos); ret.push_back(token); input.erase(0, pos + delimiter.length()); } ret.push_back(input); return ret; } int main() { vector <string> answer; int N; cin >> N; bool flag = false; // string pattern; char pattern[101] = {0, }; cin >> pattern; string d = "*"; vector<string> a = split(pattern, d);//a에 담기게 된다 // for(string b : a) cout << b << "\n"; char temp[101] = {0, }; char part1[101] = {0, }; char part2[101] = {0, }; a[0].copy(part1, a[0].size()); a[1].copy(part2, a[1].size()); // cout << "part1 is " << part1 << endl; // cout << "part2 is " << part2 << endl; for(int i = 0; i < N; i++){ cin >> temp; if(strlen(temp) < a[0].size() + a[1].size()){ answer.push_back("NE"); continue; } for(int j = 0; j < a[0].size(); j++){ if((temp[j] == part1[j]))flag = true; else flag = false; } int cnt = strlen(temp) -a[1].size();//마지막 단어 인덱스 번호 for(int j = 0; j < a[1].size(); j++){ if((temp[cnt + j] == part2[j]))flag = true; else flag = false; } if(flag){answer.push_back("DA"); cout << "DA" << "\n";} else { answer.push_back("NE"); cout << "NE" << "\n"; } } // for(string x : answer)cout << x << endl;s return 0; }
-
미해결코딩테스트 [ ALL IN ONE ]
문의드립니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.설명 하실떄 사용하는 파이썬 프로그램 명은 어떤건 가요? 저는 파이참을 사용중인데 하나씩 재생하는데? 조금 불편함이있어 노씨님 프로그램으로 사용해보고 싶어 문의 드립니다.
-
해결됨자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
for문에 있는 DFS
function solution(n, m) { let answer = []; let tmp = Array.from({ len function DFS(L, s) { if (L === m) { answer.push(tmp.slice( } else { for (let i = s; i <= n tmp[L] = i; console.log(tmp); DFS(L + 1, s + tmp[L]); } } } DFS(0, 1); return answer; } console.log(solution(4, 2));강사님 저는 강의 보기전에 i + 1이 아닌 s + tmp[L]로 하니까 정답이 나오더라구요, 이렇게 해도 문제가 없 는 코드인가요?
-
미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
채점기 파일 오류
안녕하세요 강사님!강의 너무 잘 듣고 있습니다!다름이 아니라 채점프로그램을 실행하면 위와 같은 오류가 발생하는데 원인을 모르겠습니다..파이썬도 ORG에서 최신버전으로 PATH와 설정 체크까지 해서 설치하였고해당 폴더에 AA.py로 만들고 프로그램을 실행시켜도 위와 같은 오류가 발생합니다..ㅠㅠ 해결방법이 있을까요? k번째 큰 수 문제 코드입니다!import sys sys.stdin=open("input.txt", "rt") n, k = map(int,input().split()) a = list(map(int,input().split())) res=set() # set()=> 같은 값을 여러번 넣어도 한번만 들어감. for i in range(n): for j in range(i+1,n): for m in range(j+1, n): res.add(a[i]+a[j]+a[m]) res=list(res) res.sort(reverse=True) # 내림차순 print(res[k-1])
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-k 교수가 된 현우
선생님 안녕하세요2-k 강의를 듣기 전 먼저 풀어보았는데 컴파일 에러가 나옵니다.어느 부분이 잘못되었는지 몰라서 질문 드립니다.http://boj.kr/bfdfa1d3fcad42daae13f2d7e13b973c
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
7-L 질문입니다.
안녕하세요 강사님. for (int j = 100; j > cost[i]; j--)냅색 알고리즘에서 j 가 cost[i]를 포함하지 않아야만 하나요?