묻고 답해요
169만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결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; }
-
해결됨코딩테스트 [ ALL IN ONE ]
강의자료 공유 요청 드립니다!
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요. 강사님 강의 너무 잘 보고 있습니다.교재 공유 요청 드립니다!
-
미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
매출액의 종류 문제에서 시간초과 에러가 뜨는데요...
public static void main(String[] args){ Scanner in = new Scanner(System.in); int a = in.nextInt(); int b = in.nextInt(); int[] arr = new int[a]; for(int i = 0 ; i < a ; i++) { arr[i] = in.nextInt(); } String answer = ""; HashMap<Integer, Integer> map = new HashMap<>(); for(int i = 0 ; i <= (a - b) ; i++) { map.clear(); for(int j = i ; j < (i+b) ; j++) { map.put(arr[j], map.getOrDefault(arr[j], 0) + 1); } answer = answer + map.size() + " "; } System.out.println(answer); }저는 이렇게 짰는데요...아무리 봐도 강의에서 알려주신 것과 크게 차이를 못 느끼겠는데... 혹시 어떤 부분에서 문제가 되는걸까요?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
값은 정상적으로 나오는데 어디가틀린지모르겠습니다.
안녕하세요 큰돌님. 언제나 늘감사하게 수업듣고있습니다.vscode에서는 이코드로돌리면 정상적으로 나오는데 어디가틀린지 모르겠네요 한번만 봐주실수있을까요? 감사합니다.#include<bits/stdc++.h> using namespace std; string a[104][104]; int h,w,cnt,ret[104][104]; string s; bool flag; int main() { cin >> h >> w; for(int i=0; i<h; i++){ for(int j=0; j<w; j++){ cin >> s; a[i][j] = s; } } for(int i=0; i<h; i++){ flag = 0; for(int j=0; j<w; j++){ if(a[i][j] == "c"){ cnt = 0; flag = 1; ret[i][j] = cnt; } if(flag && a[i][j] == "."){ cnt++; ret[i][j] = cnt; } else if(!flag) { flag = 0; ret[i][j] = -1; } } }; for(int i=0; i<h; i++){ for(int j=0; j<w; j++){ cout << ret[i][j] << " "; } cout << "\n"; } return 0; }
-
해결됨코딩테스트 [ ALL IN ONE ]
과제형 코딩테스트 비율은 얼마나되나요?
알고리즘 코테 말고 과제형식으로 진행이 되는것은 비율이 얼마나 되는지 알려주실 수 있나요? 대략 느낌상 이렇다 정도만 얘기해주셔도 괜찮습니다
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-I 런타임 에러
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.안녕하세요 큰돌님! 2-I를 푸는 과정에서 코드를 수정해도 똑같은 오류가 나서 질문 남깁니다..코드를 작성할 때마다 런타임에러가 나는데 이유를 모르겠습니다.http://boj.kr/a34c68854cf14b81923e976a22e91188
-
해결됨2주만에 통과하는 알고리즘 코딩테스트 (2024년)
1강 숫자야구 문제 질문
안녕하세요,알려주신 대로 코드를 작성하였는데 결과가 계속 안나오네요. 혹시 어떤 부분에서 문제가 있는지 알 수 있을까요?n=int(input())result=0 # 가능한 결과의 개수mycon=[list(input().split()) for _ in range(n)]for a in range(1,10): for b in range(1,10): for c in range(1,10): count=0 if a==b or b==c or a==c: continue for i in range(n): strike_count=0 ball_count=0 #nowcon은 각 조건을 담은 리스트 nowcon=mycon[i] if str(a)==nowcon[0][0]: strike_count+=1 if str(b)==nowcon[0][1]: strike_count+=1 if str(c)==nowcon[0][2]: strike_count+=1 if str(a) in nowcon[0]: ball_count+=1 if str(b) in nowcon[0]: ball_count+=1 if str(c) in nowcon[0]: ball_count+=1 ball_count-=strike_count if strike_count==nowcon[1] and ball_count==nowcon[2]: count+=1 if count==n: result+=1 print(result) 감사합니다
-
미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
코드 검토
안녕하세요 제가 강의듣기 전에 풀어보았는데저의 경우 처음 dfs()를 호출할때 for문으로 돌려서 했는데 이런식으로 해도 괜찮을까요?function solution(n, m) { let answer_arr = [], answer_cnt = 0; let arr = Array.from({ length: n }, (v, k) => k + 1); function dfs(k, str, cnt) { if (cnt > m) { answer_arr.includes(str) || answer_arr.push(str); } else { str += k + " "; for (let x of arr) dfs(x, str, cnt + 1); } } for (let x of arr) dfs(x, "", 1); return answer_arr; }
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
1-L 주몽 문제 질문입니다
안녕하세요 큰돌님. 현재 강의를 듣고 있는 수강생입니다. 현재 1-L문제를 Vector형식에서 이중 for문을 이용해서 푸는데 고유한 값을 만들 수 있는 두개의 값이 있을 경우 이후 두개의 값을 0으로 처리하여 첫 번째 for문에서 0이 있을 경우 두 번째 for문으로 들어가지 않게 처리를 했는데요. 그 처리를 하니 백준에서 틀렸다고 나옵니다. 하지 않았을 경우에는 맞다고 표시가 되고요. 그래서 이유가 뭔지 궁금합니다. http://boj.kr/561f58234a27422bb2b2e02606e349fa
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3-N 비효율적으로 풀었는데 이렇게 접근해도 되나요?
안녕하세요 큰돌님,다름이 아니고 3-N 완전이진 트리문제 이거 정석적인 방법이 잘 안떠올라서 무식하게 풀었는데 이렇게 풀어도 괜찮은가요?항상 문제 먼저 풀어보고 안풀리면 큰돌님 영상보는 식으로 학습중이거든요.... 이번에는 영상 보기전에 풀어서 통과가 되었지만 이런 방식으로 문제에 접근해도 괜찮은 건지 여쭙니다. #include <bits/stdc++.h> using namespace std; int K, ksize, input; vector<vector<int>> result; vector<int> v; int main() { cin >> K; ksize = pow(2, K) - 1; for (int i = 0; i < ksize; ++i) { cin >> input; v.push_back(input); } while (v.size()) { vector<int> temp; for (int i = 0; i < v.size(); i += 2) { temp.push_back(v[i]); } result.push_back(temp); for (int i = v.size() - 1; i >= 0; i--) { if (i % 2 == 0) { v.erase(v.begin() + i); } } } for (auto i = result.rbegin(); i != result.rend(); ++i) { for (const auto &n : *i) { cout << n << ' '; } cout << '\n'; } return 0; }
-
미해결Do it! 알고리즘 코딩테스트 with C++
백준 11404 플로이드 문제 질문있습니다.
입력을 받을 때 for (int i = 0; i < m; ++i) { int a, b, c; cin >> a >> b >> c; for (int i = 0; i < m; ++i) { int a, b, c; cin >> a >> b >> c; if (adj[a][b] > c) adj[a][b] = c;위처럼 입력을 받았는데요여기서 adj[a][b] = c;이게 빠지면 틀렸다라고 나오는데 왜 틀린것인지 이해가 안가는데 설명 부탁드립니다..
-
미해결Do it! 알고리즘 코딩테스트 with C++
문제 85번 질문드립니다
#include<iostream>using namespace std;int T[16];int P[16];int D[16];int main() { ios::sync_with_stdio(false); cin.tie(0); cout.tie(0); //freopen("input.txt", "r", stdin); int N; cin >> N; for (int i = 0; i < N; i++) { cin >> T[i] >> P[i]; } for (int i = N - 1; i >= 0; i--) { if (i + T[i] > N) D[i] = 0; else { D[i] = max(D[i + 1], P[i] + D[i + T[i]]); } } cout << D[0];}여기서 초기화할 때 왜 0으로 하면 14프로까지 갔다가 틀렸습니다가 나오는지 잘 모르겠습니다 'i + T[i] > N' 다음 조건이 성립하면 항상 점화식의 값이 0이 나오는 것이 아닌가요?
-
미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
바둑이 승차 - bfs 시간초과
안녕하세요, 바둑이 승차를 bfs로 풀어보다가, 시간 초과 에러가 떠서 여쭤봅니다.!아래는 제 코드입니다.import java.util.*; public class Main { static class Node { int sum; int level; public Node(int sum, int level) { this.sum = sum; this.level = level; } } static int n; static int w; static int[] puppies; static int result; public int bfs() { Queue<Integer> Q = new LinkedList<>(); Q.offer(puppies[0]); Q.offer(0); int L = 0; while(!Q.isEmpty()) { int len = Q.size(); if(L==n) break; for(int i=0 ; i<len; i++) { int tmp = Q.poll(); if(tmp>w) continue; result = Math.max(tmp, result); if(L<n-1 ) { int next = puppies[L+1]; Q.offer(tmp + next); Q.offer(tmp); } } L++; } return result; } public static void main(String[] args) { Main T = new Main(); Scanner sc = new Scanner(System.in); w = sc.nextInt(); n = sc.nextInt(); puppies = new int[n]; for(int i=0; i<n; i++) { puppies[i] = sc.nextInt(); } T.bfs(); System.out.println(result); } } bfs, dfs 모두 모든 노드를 방문한다는 점에서, 같을 것 같은데, 왜 bfs는 시간 초과가 날까요.?제가 break을 놓친 부분이 있을까요?
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
선생님 2주차 개념 #9의 예제 문제 질문있습니다.
해당 코드는 제가 직접 구현한 문제 해답 코드인데요. 5 51 0 1 0 11 1 0 0 10 0 0 1 10 0 0 1 10 1 0 0 0의 테스트 케이스를 통과하도록 짜봤습니다.n * m 의 인접행렬을 만들고 1을 발견할 시 그 위치에서부터 ↑→↓←의 순으로 탐색을 하며 네 방향의 탐색을 마쳤을 때 결과가 모두 1이 아니라면 결과값을 1씩 증가시켜 답을 출력하는 코드입니다.첫번째 질문으로는 제가 구현한 코드가 너무 비효율적인 것 같습니다. 어떻게하면 이 코드에서 더 좋은 코드로 발전시킬 수 있을까요?두번째 질문으로는 제가 구현한 방식을 dfs라고 할 수 있는걸까요? 그냥 감으로 작성한 코드라서 이게 될줄 몰랐습니다..코드는 다음과 같습니다.단순히 구현만 하는것으로는 정답이겠지만 만약 이런 문제가 나온다면 시간초과나 메모리 초과가 날 게 분명해 보입니다../* 연결된 육지는 모두 오염 바다로는 갈 수 없다. 오염시킬수 있는 방향은 상 하 좌 우 네방향 최소 몇번을 이동해야 모든 육지를 오염시킬 수 있는가? 1 : 육지 0 : 바다 범위 1 <= N <= 100 1 <= M <= 100 예제 입력 입력은 맵의 세로길이 N과 가로길이 M이 주어진다. N * M의 맵이 주어진다. 5 5 1 0 1 0 1 1 1 0 0 1 0 0 0 1 1 0 0 0 1 1 0 1 0 0 0 출력 4 */ #include <bits/stdc++.h> using namespace std; const int dy[] = {-1, 0, 1, 0}; const int dx[] = {0, 1, 0, -1}; int n, m, findCount = 0; void dfs(int y, int x, int **ajm){ ajm[y][x] = 0; int check = 0; for(int i = 0; i < 4; i++){ int ny = y + dy[i]; int nx = x + dx[i]; if(ny < 0 || ny >= n || nx < 0 || nx >= n) { check++; if(check == 4){ findCount++; return; } continue;} if(ajm[ny][nx] != 1) { check++; if(check == 4){ findCount++; return; } continue; } if(ajm[ny][nx] == 1){ dfs(ny,nx,ajm); return; } } } int main(){ int num; cin >> n >> m; int **ajm = new int*[n]; for(int i = 0; i < n; i++){ ajm[i] = new int[m]; } for(int i = 0; i < n; i++){ for(int j= 0; j < m; j++){ cin >> ajm[i][j]; } } for(int i = 0; i < n; i++){ for(int j= 0; j < m; j++){ if(ajm[i][j] == 1){ dfs(i, j, ajm); } } } cout << findCount; return 0; }
-
미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
코드 검사 부탁드립니다!
안녕하세요 이진트리 개념 듣고 강의 듣기전에 한번 풀어보았는데 이런 식으로 작성해도될까요? 틀린부분 있으면 피드백 부탁드립니다!function solution(k) { let answer = []; function dfs(n, arr) { let arr1 = [...arr, n]; if (n > k) { arr.length && answer.push(arr); return; } else { dfs(n + 1, arr); dfs(n + 1, arr1); } } dfs(1, []); return answer; }
-
미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
1-1 왜 런타임 에러가 나오는지 모르겠습니다
package org.example; import java.util.Scanner; import static java.lang.Character.*; public class Main { public static int solution(String str, String ch){ int result = 0; for(int i = 0; i < str.length(); i++){ if(toLowerCase(str.charAt(i)) == toLowerCase(ch.charAt(0))){ result++; } } return result; } public static void main(String[] args) { Scanner scanner = new Scanner(System.in); String str = scanner.next(); String ch = scanner.next(); System.out.println(solution(str, ch)); } }IDE에서는 정상적으로 실행되는데채점사이트에서는 런타임에러가 나네요 ㅠㅠ이유를 모르겠습니다
-
미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
안녕하세요
for(int i = 0;i<s.length();i++){ if(s.charAt(i)>='a' && s.charAt(i)<='z'){ s.charAt(i) = s.charAt(i) - 32; System.out.print(s.charAt(i)); } else{ s.charAt(i) = s.charAt(i) +32; System.out.print(s.charAt(i)); } } 안녕하세요 위와 같이 풀었을때s.charAt(i) = s.charAt(i) - 32;이 코드에서 s.charAt(i) 인덱스에 직접 문자값을 저장할 수 없는 이유는 무엇인가요?? 리터럴이라서 그런건가요?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2468 질문있습니다!
http://boj.kr/edaf5f63d5104445b6740ef8ab48e5c6 강의를 듣기 전에 문제를 풀어서 제출을 했습니다.예제는 맞았는데 틀린 이유를 찾지 못했습니다. 한번 살펴봐주시면 감사하겠습니다!항상 감사합니다!
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
m1 세팅 확인 부탁드립니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.이렇게 진행했는데 오류가 계속 뜹니다.visual studio code는 세팅을 하고 설치하면 될까요?추가로 터미널에서 줄바꿈 기능은 따로 없는걸까요?