묻고 답해요
169만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
1-A 질문드립니다!
안녕하세요.1-A를 푸는 도중 궁금한 부분이 생겨 질문드립니다.해당 문제 출력 조건에 일곱 난쟁이의 키를 오름차순으로 출력한다고 되어있는데,next_permutation을 사용했을 때 어떤 이유로 출력 직전에는 a[0] ~ a[6] 을 sort 하지 않는 것인지 궁금합니다.처음에 입력값을 배열에 받은 뒤에 sort를 통해서 정렬을 하고 들어가도 순열이다 보니까 중간에 오름차순으로 정렬되지 않을 수도 있는데 어떤 이유인지 궁금합니다!
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-Q
http://boj.kr/8dec3ec12c294bc6b22189db0403ed50선생님 복습을 하다가 이렇게 cheese가 없으면 break해서 cnt의 그 전 값을 보존하는 방법은 어떨까 해서 질문 드립니다!이렇게 하면 치즈가 다 녹았는지 다시 체크 안해도 될 것 같아서 더 효율적일 것 같아 질문 드립니다!
-
해결됨세계 대회 진출자가 알려주는 코딩테스트 A to Z (with Python)
섹션 3 BOJ 1342 //= 연산자 관련
안녕하세요, 코드 마지막에 순열의 중복 제거를 위한 로직을for i in range(...): ans //= fact(S.count(chr(i))) 아래처럼 직접 분모를 먼저 구하는 방식으로 구현하고 대입했는데 채점에서 풀이가 틀렸다고 나옵니다.deno = 1for i in range(...): deno *= S.count(chr(i)))ans = int(ans/deno)순열 공식상 순열의 개수 ans/deno는 항상 정수가 나옴이 자명함에도 왜 //=를 써야 정답이 되는지 궁금합니다.
-
미해결코딩테스트 [ ALL IN ONE ]
그래프
그래프 1번 문제는 for문 2번을 사용하는데 그래프 2번은 왜 for문을 2번을 안하는걸까??
-
미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
다익스트라 알고리즘
제가 이해한 것이 맞는지 궁금해서 질문드립니다.pq에서 poll이 됐다는 것은 poll이 된 해당 정점은 dis 배열에서 최소 비용이 확정됐다는 것이죠?만약 3번 정점의 비용이 4로 최소비용 확정이 되었는데 이것은 1 -> 3으로 갔을 때인 거잖아요. 그럼 1이 아닌 다른 정점에서 3번으로 가는 경우도 pq에서 poll이 될텐데 이미 확정이 났기 때문에 수행속도를 줄이기 위해 if continue 문을 쓰신건가요?
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
4-A 질문있습니다!
4-A 를 저 혼자 풀어봤는데 정답 99% 에서 자꾸 오류가 납니다 ㅜㅜ...http://boj.kr/5d5b1d57540140d780129a99defd6bf8도와주세요..
-
미해결it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비
그리디 파트
선생님 강의 잘 보면서 공부하고 있는데요혹시 그리디 파트가 어디예요?알려주시면 감사하겠습니다!
-
미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
dp를 이용한 계단 오르기
5번째 계단으로 오는 방법의 수가 8인 이유가 제가 이해한 게 맞는지 궁급합니다.i - 2번째 계단에서는 두 칸 점프 즉 +2가 붙는 경우를 고려한거고i - 1번째 계단에서는 한 칸 점프 즉 +1이 붙는 경우를 고려한건가요?5번째 계단을 구할 때 3번째 계단까지 오는 경우의 수는 3이고 이 3개의 경우에 전부 +2가 붙어서 5가 되고4번째 계단까지 오는 경우의 수는 5인데 이 5개의 경우 전부 +1씩해서 5가 되어서3 + 5 = 8이 되는 로직이 맞는지 질문드립니다.
-
미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
계단오르기
import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.*; public class Main { static int cnt = 0; public static void dfs(int sum, int n) { int[] arr = {1, 2}; for (int i = 0; i < arr.length; i++) { sum += arr[i]; if (sum == n) { cnt++; sum -= arr[i]; } else { if (sum < n) dfs(sum, n); sum -= arr[i]; } } } public static void main(String[] args) throws Exception { BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in)); int n = Integer.parseInt(bufferedReader.readLine()); dfs(0, n); System.out.println(cnt); } }dp를 잘 몰라서 자력으로 dfs 방식으로 풀었는데 그닥 좋지 않은 접근일까요...?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
공부 방법 문의드립니다!
선생님, 안녕하세요.다름이 아니라 문제를 먼저 30분 정도 보아도 아예 감이 오지 않아서, 못 푼 채 강의 먼저 보게 되는데요.문제는, 강의를 보아도 다시 풀려고 하면 못 풉니다.강의를 보고 외워야 하는 걸까요?그런데 외운다고 하면, 이번 문제의 경우 풀이 방법이 여러가지인데 모두 외워야 하나요?그리고 너무 감이 안 와서 백준의 C++ 배우기 기초 문제를 하루 1문제씩 풀고 있는데 이 방법이 맞을까요?3개월 안에 코딩테스트 대비를 완수해서 상반기에 입사를 하려면하루 몇 문제씩 어떻게 공부해야할지 감이 안 잡혀 몇 주가 흐지부지 지나간 것 같습니다.조언해주시면 정말 감사드리겠습니다.
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
.
.
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3-h 코드 질문입니다.
안녕하세요!강의를 보고 혼자서 풀었는데 조금식 다르기는 하지만 전체적인 흐름은 큰돌님 코드와 똑같다고 생각합니다.하지만 왜인지 자꾸 틀렸다고 뜨네용..#include <bits/stdc++.h> using namespace std; int n, k; queue<int> q; int visited[200004]; int arr[200004]; int t; int ret; int main() { cin >> n >> k; if (n == k) { cout << 0 << "\n" << 1; return 0; } q.push(n); visited[n] = 1; arr[n] = -1; while (q.size()) { t = q.front(); q.pop(); if (t == k) { break; } for (int next : {t - 1, t + 1, t * 2}) { if (next < 0 || next > 100000) continue; if (visited[next]) continue; visited[next] = visited[t] + 1; arr[next] = t; q.push(next); } } int temp = k; vector<int> v; while (temp != -1) { v.push_back(temp); temp = arr[temp]; } reverse(v.begin(), v.end()); cout << visited[k] -1 << "\n"; for (int a : v) { cout << a << " "; } }
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-I 질문드립니다.
https://www.acmicpc.net/source/965221752-I 2870 문제 해결이 되지않아 질문드립니다. 로직은 한 문자열을 받을때마다, 숫자가 시작되는 부분과 끝나는 부분을 파악하면 담고, 없는 부분은 담지 않습니다.다 담으면, 0으로 시작하는 부분에 대해 0을 제거하는 함수를 실행시켜 해당 원소를 앞의 0을 제거한 수로 바꿉니다.(0000은 0으로 처리가 잘 됩니다.)그리고 정렬에도 이상이 없어보입니다...! 예시문제는 다 통과되는데, 3%에서 계속 오답이 됩니다...!어디가 틀렸을까요?
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3-P 질문 있습니다.
안녕하세요 항상 강의 잘 듣고 있습니다!해당 문제를 풀면서 작성한 코드는 아래와 같습니다. #include <bits/stdc++.h> using namespace std; int N; int arr[12][12]; int cost[12][12]; const int INF = 987654321; int ret=INF; void go(int cnt, int price, int start1, int start2){ if(cnt==3) ret = min(ret, price); if(price>ret) return; for(int i=start1;i<=N-2;i++){ for(int j= (i==start1? start2:1) ;j<=N-2;j++){ if(arr[i][j] || arr[i-1][j] || arr[i][j-1] || arr[i][j+1] || arr[i+1][j]) continue; //이미 있는 경우 arr[i][j]=1; arr[i-1][j] =1; arr[i][j-1] =1; arr[i+1][j] =1; arr[i][j+1] =1; int tmp_sum = cost[i][j]+cost[i-1][j]+cost[i][j-1]+cost[i+1][j]+cost[i][j+1]; go(cnt+1, price+tmp_sum, i, j); arr[i][j]=0; arr[i-1][j] =0; arr[i][j-1] =0; arr[i+1][j] =0; arr[i][j+1] =0; } } return; } int main(){ cin>>N; for(int i=0;i<N;i++){ for(int j=0;j<N;j++){ cin >> cost[i][j]; } } go(0,0,1,1); cout << ret <<'\n'; return 0; }처음에 작성한 코드는 go(0,0) 으로 x,y를 따로 파라미터로 넘겨주지 않았습니다. 하지만 이럴 경우 시간초과가 났습니다. 이로 인해 x, y 파라미터를 추가하였습니다.실제로 해설 코드를 봐도 해당 인자를 넘기지 않는 것으로 확인되는데 이유는 모르겠으나 소요시간에 차이가 상당히 차이가 나는데 어떤 이유인지 알 수 있을까요?
-
미해결코딩테스트 [ ALL IN ONE ]
노션 공유
58q6ysrtnj@privaterelay.appleid.com 멤버십을 요청하였는데 승인이 안 나는지 교재를 확인할 수 없습니다. ㅠㅠ
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
중간에 끊어가기에 대해
안녕하세요 선생님! 저번주부터 선생님 강의를 수강하기 시작하여 현재 1.4(1.5 메모리와 포인터 전까지, 67p)까지 교안을 공부한 상태입니다. 지금까지 했던 것들을 익숙하게 하기 위함과 워낙 새로운 것들을 많이 받아들이다 보니 정리할 시간이 필요하여 문제를 많이 풀어보며 정리를 하고 배운것들까지의 내용에 대해 익숙해지고 싶은데 어떤 수준의 문제를 어디서 얼마나 풀어야 할지 잘 모르겠어서 질문드립니다!
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2_C 질문있습니다!
안녕하십니까 강사님! 덕분에 강의 너무 잘 듣고 있습니다! 제가 정답은 맞았으나 강사님 코드랑 비교해보니 구현 방법이 조금 다른 거 같았습니다!강사님 코드는 최대 깊이까지 메모리 만들어 놓은 거 같고 저는 입력의 최대 값까지만 비교했습니다!제가 이 문제를 한번 더 풀때 어떤 방법으로 접근하는게 더 좋을지 고민이 됩니다.코딩테스트 공부 뿐만 아니라 효율적인 코드 작성에 대해서도 고민하고 싶어서 여유가 되신다면 제가 작성한 코드 피드백을 해주실 수 있으실지 해서 남깁니다! 감사합니다!http://boj.kr/c46e4ccf34ef4c4f9a68a8c31af8959d
-
미해결JavaScript 알고리즘 베스트 10
학습방법과 방향성을 잡아주시면 감사하겠습니다.
제가 문제를 풀때, 너무 하드코딩을 하는것 같이 느껴집니다.우선 문제를 먼저 풀어보고, 강의를 듣고 있는데, 선생님이 푼 방법으로 풀려고 노력하는게 좋을까요? 아니면, 선생님이 푼 방법으로 바꾸려고 노력하는게 좋을까요??제가 짠 코드는 이렇습니다.function solution(data){ let answer = []; let rotten_carret = 0; let rotten_carret_count = 0; //일단 for문으로, carret 밭 전체 탐색 for(let i = 0; i < data.length; i++) { for(let j = 0; j < data[i].length; j++) { //#일때 썩은당근 갯수 ++ if(data[i][j] === '#') { rotten_carret++; } //만약 0이라면 if(data[i][j] === 0) { //빈곳에서 주변 탐색을 통한 썩은 당근 갯수 구하기 for문 for(let k = (i-1); k <= (i+1) && k < data.length; k++) { for(let f = (j-1); f <= (j+1) && f < data[i].length; f++) { if( (k >= 0 && f >= 0) && (k!==i || f!==j)) { if(data[k][f] === '#') { //console.log${i},${j}일때 ${k},${f} 엔 ${rotten_carret_count}); rotten_carret_count++; } } } } } } } answer.push(rotten_carret); answer.push(rotten_carret_count); return answer;} 어떤 방식으로 학습하는 것이 더 효율적일지 의문이 들어 이렇게 문의 드립니다.
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
문제 질문
교안에 없는 문제인데 따로 질문드려도 괜찮을까요 큰돌님..! AI나 구글링을 해봐도 답이 안나와서 질문드립니다 ㅠㅠ
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
학습방법 문의. 간절해요 ㅠㅠ
안녕하세요 선생님. 전반적인 코딩 공부에 관한 질문을 드리려 이렇게 질문을 남기게 되었습니다. 현재 대학교 3학년이고 소프트웨어학부입니다. 1학년 때 c언어(혼공씨 교재)로 수업을 하였고 저는 이때 코딩을 완전히 등한시하며 3학년까지 교양이나 이산수학, 선형대수 과목 같은 과목들만 수강하며 학점을 채우며 다니다가 3학년 1학기 때 개인적인 사정으로 휴학을 하게 되었습니다. 아예 백지 상태였던 저는 제대로 공부하자는 마음이 생겨 혼공씨 책을 다시 구매하여 포인터 전까지 유튜브에 있는 강의를 들으며 기본적인 c문법을 익혔습니다. 그런데 아무래도 무료 강의이기도하고 따로 문제를 푸는 강의이기보다는 기본적인 문법을 알려주는 수준의 강의인지라 뭔가 한계를 느끼고 지인들의 추천을 받아 선생님의 강의를 구매하게 되었습니다. 현재 제 상태는 포인터 전까지의 기본적인 문법 정도만 알고 있고 따로 문제를 풀어본 경우는 거의 없다고 봐도 무방합니다. 복학을 한다면 객체지향프로그래밍 실습, 자료구조와 같은 c언어보다 더 심화 된 언어들로 수업을 하는 과목이 기다리고 있습니다. 따라서 저는 정말 아주 기본적인 c문법은 알고 있으니 선생님의 강의를 들으며 모르는 것들은 혼공씨나 구글에서 찾아보며 c++메인에 c는 c++을 들으며 자연스럽게 메꾸어가는 방식으로 학습을 할 예정인데 이게 맞는 방법인지도 모르겠고 시간이 얼마 없어 너무 막막한 마음만 듭니다. 만약 시간이 되신다면 이런 제 상황에 맞는 학습법을 추천해주시기를 간곡히 부탁드립니다. 긴 글 읽어주셔서 감사합니다