묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
인접행렬 재귀함수 이렇게 짠 것도 맞는 건가요..?
이중for문도 아니고 뭔가 이상한 것 같은데 출력은 나오고..근데 정확히 뭐가 이상한 건지 잘 모르겠어요..ㅜㅜ맞게 짠 건지 확인 및 조언 부탁드려도 될까요..?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
7-O 질문입니다!
안녕하세요, 큰돌님17837을 풀던중 문제 예제 입력 5에서 답이 나오지 않습니다.반례를 다 찾았다고 생각했는데, 대체 왜 안되는지 궁금합니다... https://www.acmicpc.net/source/72120636
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
1-A 테스트 케이스는 통과하는데 틀렸다고 뜹니다 ㅠ
안녕하세요 선생님,강의 잘 보고 있습니다. http://boj.kr/af15ab332b77463faa58e47e6826ca48선생님께서 설명하신 방법과 비슷한데, 일곱 난쟁이가 아닌 두 명을 잡아내기 위해 아홉개의 입력값의 합 sum에서 일곱 난쟁이 키의 합인 100을 뺀 sum-100 을 sub라는 변수에 담아두었고, 이중for문을 이용해 두 입력값의 합이 sub와 일치하는 두 수를 찾아냈습니다. 배열은 삭제가 안되니 그냥 저 두수를 0으로 처리하고 sort를 통해 오름차순으로 정렬한 다음, 출력할 때 두번째 인덱스부터 출력하도록 코드를 짜봤습니다.(0으로 바뀐 두 수는 맨 앞인 0번째와 1번째에 위치하게 되어 2번째 인덱스부터 출력하도록 하여 출력이 안되는 것을 의도) 야매스러운 방법이긴 하지만.... 그래도 어느 부분에서 예외가 발생했는지 확실히 알고 싶어 이렇게 질문드립니다!
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
1-n 홀수의 경우가 잘 이해가 되지 않습니다.
if (b % 2) ret = (ret * a) % c;홀수의 경우 a를 한번 더 곱해서 값을 return하게 되면(a^b * a^b * a)^2 % c 하는 경우가 생기는 것 같은데 적상적으로 작동하는 이유가 궁금합니다
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
백엔드 공부용 맥 사양
맥북에어 m1 또는 m2 ...16gb 256ssd백엔드 진로 공부용으로 충분한 사양일까요?? 조언 부탁드리겠습니다 선생님.
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
m1 세팅 재질문드립니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.말씀해주신 방법대로 했고 bits인지 확인 후 해도 다음과 같이 에러가 발생합니다. 수업자료에 있는 m1 추가 방법으로해도 오류가 발생하네요;;whoami 도 첨부하겠습니다. 감사합니다.
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
1주차 문제로 연습하는 시간복잡도 Q3 질문 있습니다!
안녕하세요go함수가 2n-1 번 호출된다는 것은 이해했습니다.그런데 main함수에 보면 for문이 하나 더 있는데, 그럼 이 for문 내에서 n번 도는 거니 n + (2n-1) = 3n-1 이 되어야 하는 것 아닌가요?? 사실 빅오표기법에 의하면 둘다 O(n) 이어서 크게 중요하진 않을 수 있으나 혹여나 제가 잘못 이해한 부분이 있다면 바로잡고 싶어 질문드립니다!
-
미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
4챕터 증가수열문제
사소한거긴 한데 while문 조건이 lt<=rt인데만약에 input이 61 3 5 6 4 2이렇게 주어지면 while문이 안 끝나서요.. 차피 judge.exe 돌리면 맞게 나오긴 하는데 이런건 신경 안 쓰고 풀어도 되나요?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
교안 p.46 질문
#include <bits/stdc++.h> using namespace std; int n; int main() { cin >> n; int a[n]; memset(a, 0, sizeof(a)); for(int i : a){ cout << i << " "; } return 0; }여기서 선생님이 에러가 난다고 했는데, 제 컴퓨터 vscode에서는 왜 에러 안뜨고 실행이 잘 되는 이유를 알고싶습니다. 제가 리눅스 터미널에서도 실행시켜 봤는데 에러가 발생하지 않는데, 원인을 잘 모르겠습니다.
-
해결됨코딩테스트 [ ALL IN ONE ]
템플릿 코드에서 if cur_v not in costs: 부분에 의문이 있습니다.
def dijkstra(graph, start, final): # 각 노드들의 비용을 저장 costs = {} # 우선순위 큐 pq = [] # (해당위치까지 가는 총 비용, 노드위치) heapq.heappush(pq, (0, start)) while pq: # heappop을 하면 가장 작은 원소가 튀어 나온다. cur_cost, cur_v = heapq.heappop(pq) # 방문하지 않은 백터 일때만 작동 if cur_v not in costs: # costs[cur_v] = cur_cost for cost, next_v in graph[cur_v]: next_cost = cur_cost + cost heapq.heappush(pq, (next_cost, next_v)) return costs[final]해당 템플릿 코드중에서 if cur_v not in costs: costs[cur_v] = cur_cost어떻게 costs에 cur_v가 없다는 것 만으로 바로 최적의 경로라고 확신할 수 있는지 의문이 있습니다. heapq의 성질덕에 cur_cost, cur_v가 '지금까지 heap에 넣은 값들중에' 가장 작은 값 인거는 알겠는데 다른 경로를 통해 뒤늦게 heap에 들어간 값이 이전에 costs에 not in이여서 넣은 값보다 작은 경우도 있지 않나요??뭔가 제 생각에 자연스럽지 않아서 다른 코드들을 찾아보니 아래와 같이 제가 생각한 조건대로 대소 비교를 해보고 넣더군요.def dijkstra(graph,start,end): costs = {vertex:111111 for vertex in graph} pq = [] heapq.heappush(pq,(0,start)) while pq: cur_cost, cur_v = heapq.heappop(pq) if costs[cur_v] < cur_cost: continue for cost, next_v in graph[cur_v]: next_cost = cur_cost + cost if next_cost < costs[next_v]: costs[next_v] = next_cost heapq.heappush(pq, (next_cost, next_v)) return costs[end] " '지금까지 heap에 넣은 값들중에' 가장 작은 값 " 이 아니라 앞으로 나올 값 중에 가장 작은 근거가 있을까요??- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
7-M 반례 질문입니다!
안녕하세요, 큰돌님!16235 문제를 풀던 중 아래 코드가 왜 안되는지 궁금합니다.맵에 각각 벡터를 넣지 않고 총 살아있는 나무를 넣는 우선순위 큐를 사용해서 구현 해보았습니다.우선순위 큐는 나이를 기준으로 오름차순 합니다. https://www.acmicpc.net/source/72058303 반례는 이것인데, 제 논리 대로라면 된다고 생각하는데 여기서 잘못된 답을 뱉어내네요... 5 2 7 2 3 2 3 2 2 3 2 3 2 2 3 2 3 2 2 3 2 3 2 2 3 2 3 2 2 1 3 3 2 3 답 : 71
-
해결됨2주만에 통과하는 알고리즘 코딩테스트 (2024년)
2강 약수 문제 질문
1번 질문: 2번 문제와 백준의 14232번이 어떻게 같은 문제인지 이해가 가지 않습니다.다음은 강의 자료입니다:문제 2. 약수 빠르게 구하기 ( #1978, #11653, #14232 )숫자 N이 주어진다.이 숫자의 약수가 총 몇 개가 포함되어 있는지 계산하고 싶다.약수의 개수와, 약수들을 모두 출력하는 프로그램을 작성하시오.15 23 5입력값과 출력값을 보면 백준 14232번을 가져오신 것 같은데 약수를 출력하는 문제가 해당 백준의 문제와 어떻게 같은 출력값이 나오는지 이해가 가지 않습니다. 14232번은 다음과 같습니다:희대의 도둑 효빈이는 세계 최고의 보석가게 영선상에 잠입할 계획이다. 이 영선상은 최고의 보석가게답게 최고의 보안장치를 두고 있는데, 이 보안장치를 해제하지 않는다면 보석을 여러 개 훔쳐갈 시, 보석끼리 달라붙으며 무게가 모든 보석들의 곱으로 늘어난다.효빈이는 이 보안장치를 해제할 수 없기 때문에, 차라리 곱해진 대로 최대한 많은 보석들을 가져오기로 계획했다. 효빈이는 한번에 k라는 무게를 들 수 있으므로, 딱 k만큼의 무게만큼의 보석을 가져오고 싶은데, 그 때 보석들의 최대 개수를 알고싶다.영선상에는 세계 최고의 보석가게답게 모든 무게의 보석들이 매우 많이때문에, 훔쳐가는 보석이 부족할 일은 없다. 다만 모든 보석들은 무게가 1보다 크다.효빈이는 이제 영선상에 잡입할 계획을 다 세웠다. 하지만 무슨 보석들을 훔쳐올지 결정하지 못하였는데, 효빈이를 대신하여 훔쳐올 보석들을 결정해주자.제가 생각하기로는 한번에 또한 강의자료에 있는 2번 문제의 정답이 해당 문제에 해당하지 않는 것 같은데 이 코드는 어디에 해당하는 코드인지 궁금합니다. 감사합니다
-
미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
11. 임시반장 정하기 질문
- 우선 채점사이트에서 정답처리 받은 코드이고요, 핵심부분입니다.int answer = 0, max=0 ; int cnt=0; for(int i=1; i<=n; i++){ // i학생이 cnt=0; for(int j=1; j<=n; j++){ //j학생들을 탐색하면서 for(int k=1; k<=5; k++){ //학년 돌면서 탐색 if(arr[i][k] == arr[j][k]){ cnt++; break; // 한번이라도 같은반인게 조건이기 때문에 } } if(max < cnt){ max = cnt; answer=i; } } }- 이 코드의 조건문 부분 코드if(arr[i][k] == arr[j][k]){이것을, 학생들을 탐색할때 자기자신을 탐색하지 않기 위해 아래와 같이 조건문을 바꾸었더니 오답처리 되었습니다. 오답처리 된 이유가 궁금합니다.if(i != j && arr[i][k] == arr[j][k]){ *참고용 전체 코드import java.util.*; public class Main { public int solution(int n, int [][] arr){ int answer = 0, max=0 ; int cnt=0; for(int i=1; i<=n; i++){ // i학생이 cnt=0; for(int j=1; j<=n; j++){ //j학생들을 탐색하면서 for(int k=1; k<=5; k++){ //학년 돌면서 탐색 if( i != j && arr[i][k] == arr[j][k]){ cnt++; break; // 한번이라도 같은반인게 조건이기 때문에 } } if(max < cnt){ max = cnt; answer=i; } } } return answer; } public static void main(String[] args) { Main M = new Main(); Scanner kb = new Scanner(System.in); int n = kb.nextInt(); int [][] arr = new int[n+1][6]; for(int i=1;i<=n;i++){ for(int j=1;j<=5;j++){ arr[i][j] = kb.nextInt(); } } System.out.print(M.solution(n,arr)); } }
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3-J 질문
큰돌님 안녕하세요! 궁금한 게 있어서 질문 드려요~해당 문제 dfs로 풀어봤는데 이렇게 풀어도 괜찮을까요?좋은 수업 잘 보고 있습니다 감사합니다.http://boj.kr/98095677a0504f42a0d20b8758029ce2
-
해결됨코딩테스트 [ ALL IN ONE ]
말씀하신 김왼손님의 4시간 코스 듣고 왔는데 수업 진도를 못따라가겠습니다.
해당 수업의 선수 수업은 따로 올라온게 없을까요? 김왼손 기초 파이썬과 선생님 강의의 간극을 매울만한 강의를 추천해주시면 감사하겠습니다,
-
미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
강의 질문 및 코드 리뷰
안녕하세요 이번 강의를 듣고 선생님께서 알려주신 풀이 방법을 이해하게 되었습니다 감사합니다!다만 제가 몇가지 질문이 있어 글 올립니다!1 . 풀이 방향이 각각의 (조합) * (숫자) 의 합이 되는데 왜 마지막 숫자가 (조합) * (숫자) 의 합이 되나요 ???제가 강의를 듣기전에 혼자서 코드를 짜보았는데 왜 이 코드는 답이 안나오는지 여쭈고 싶습니다!function solution(n, end) { let mem_arr = Array.from(Array(n + 1), () => Array(n + 1).fill(0)); // 메모이제이션 let comb_arr = Array.from({ length: n }, () => 0); // 조합의 배열 let check = Array.from({ length: n }, () => false); // for 수열 (중복X) let arr = Array.from({ length: n }, () => 0); // 순열 저장 let answer = []; function comb(n, r) { if (n === r || r === 0) return (mem_arr[n][r] = 1); if (mem_arr > 0) return mem_arr[n][r]; return (mem_arr[n][r] = comb(n - 1, r - 1) + comb(n - 1, r)); } for (let i = 0; i < n; i++) { comb_arr[i] = comb(n - 1, i); } function dfs(lev) { if (lev >= n) { let sum = 0; for (let i = 0; i < n; i++) { sum += comb_arr[i] * (i + 1); } if (sum === end) { answer.push(arr.slice()); } } else { for (let i = 1; i <= n; i++) { if (check[i] === true) continue; check[i] = true; arr[lev] = i; dfs(lev + 1); check[i] = false; } } } dfs(0); return answer; }제가 처음에 의도했던 코드의 경우로는,,일단 순열을 arr에 저장하고 lev=== n 이 될때 구한 순열과 조합의 곱의 합인 sum 을 구하여 비교하는 방식으로 짰습니다. 근데 이 코드를 실행해보니까 arr 이 (1,2,3,4) 로만 나오는데 어디서 잘못됐는지 잘 모르겠습니다!! 답변 주시면 정말 감사하겠습니다 😄
-
미해결Do it! 알고리즘 코딩테스트 with JAVA
혹시 다른 ide에서 잘 돌아가는 프로그램이
백준에서는 안 돌아갈수도 있나요?다른 ide에서는 잘 돌아가는데 백준에 제출하니까 계속 틀렸다고 하네요!
-
미해결Do it! 알고리즘 코딩테스트 with JAVA
내림차순으로 정렬하기 강의에서..
import java.util.Scanner;public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); String str = sc.next(); int A[] = new int[str.length()]; for(int i=0; i<str.length(); i++){ A[i] = Integer.parseInt(str.substring(i, i+1)); } for(int i=0; i<str.length(); i++){ int Max = i; for(int j = i+1; j<str.length(); j++); { if(A[j]>A[Max]) { Max = j; } } if (A[i] < A[Max]){ int temp = A[i]; A[i] = A[Max]; A[Max] = temp; } } for (int i=0; i<str.length(); i++){ System.out.println(A[i]); } } } 안녕하세요 강의 잘 보고 있어요.강사님이 치라는 대로 코드를 따라 쳤는데 계속 오류가 뜨네요?? (굵게 표시한 부분)cannot find symbol 오류인데.. 분명 j와 max를 잘 정의해 주었는데 왜 이러는 걸까요?
-
미해결it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비
안녕하세요 89: 토마토 문제 관련 질문있습니다!
강의 항상 잘듣고있습니다!89 토마토 문제 관련 제가 짠 코드에서 결과값은 문제 없이 나오지만 컴파일러가 아래와 같은 New_allocator 창을 띄우면서 pause 되는 문제가 있는데 코드를 아무리 봐도 에러가 왜 발생하는지 모르겠어서 질문 올립니다 . #include<iostream> #include<vector> #include<algorithm> #include<cmath> #include<queue> using namespace std; //넘겨야할 인자가 x,y,day 세개라서 class 필요 class Tmt{ public: int x; int y; int day; Tmt(int a, int b , int c){ x = a; y = b; day = c; } }; int main(){ freopen("input.txt","rt",stdin); int m,n; cin >> m >> n; // m = j = 가로 // n = i = 세로 vector<vector<int>>map(m+2,vector<int>(n+2,1)); //얘는 어차피 익으면 1로바뀌니까 ch가 따로 필요없을 것 같음. //vector<vector<int>>ch(n+2,vector<int>(m+2,0)); queue<Tmt>q; //상하좌우 탐색용 방향벡터 int dx[] = {1,0,-1,0}; int dy[] = {0,1,0,-1}; // input 읽어오는 동시에 초기 셋팅값 확인하기 int flag = 0; // flag 1 = 값이 1인 좌표 존재 for(int i = 1; i<=n ; i++){ for(int j = 1 ; j <=m;j++ ){ int temp; cin >> temp; map[i][j] = temp; if(map[i][j]==1){ flag = 1; // x,y 좌표 및 초기 0 day 삽입 및 ch 체크 q.push(Tmt(j,i,0)); } //cout << map[i][j]; } //cout << "\n"; } if(flag == 0){ //익은게 하나도없어서 결국 아무것도 안변함 -1반환 cout<<-1; return 0; } if(q.size() == n *m){ //시작때부터 다 익어있음 cout<<0; return 0; } int res = 0; //초기 setting된 q 활용해서 day 진행 while(!q.empty()){ Tmt temp = q.front(); int t_x = temp.x ; int t_y = temp.y; int t_day = temp.day; res = t_day; cout << " t_x: " << t_x << " t_y: "<<t_y<<" t_day: "<<t_day << "\n"; q.pop(); for(int i = 0; i<4;i++){ //cout <<" t_x+dx[i]: " <<t_x+dx[i] << " t_y+dy[i]: "<<t_y+dy[i] << " m: " << m << " n: "<<n << "map[t_x+dx[i]][t_y+dy[i]]: "<<map[t_x+dx[i]][t_y+dy[i]]<<"\n"; if((0<t_x+dx[i]<=m) && (0<t_y+dy[i]<=n) &&(map[t_y+dy[i]][t_x+dx[i]] == 0)){ //cout <<" t_x+dx[i]: " <<t_x+dx[i] << " t_y+dy[i]: "<<t_y+dy[i] << " m: " << m << " n: "<<n<<"\n"; map[t_y+dy[i]][t_x+dx[i]] = 1; q.push(Tmt(t_x+dx[i],t_y+dy[i],t_day+1)); } } } cout << res; return 0; }
-
미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
while 문 펙토리얼
안녕하세요 제가 코드 짤때 재귀함수로도 풀어보고 while문으로도 풀어보았는데 둘의 시간복잡도나 그런 부분에 큰 차이가 있나요??function solution(n) { let answer; function factorial(k) { if (k === 1) return 1; return factorial(k - 1) * k; } answer = factorial(n); return answer; // while 문 이용 // let answer = 1; // while (n >= 1) { // answer *= n; // n--; // } // return answer; }