묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
1 - G 질문입니다!
#include <bits/stdc++.h> using namespace std; int cnt; string pattern, input; vector<string> split(string s, string d) { long long pos; vector<string> ret; string token; while ((pos = s.find(d)) != string::npos) { token = s.substr(0, pos); ret.push_back(token); s.erase(0, pos + d.length()); } ret.push_back(s); return ret; } int main() { cin >> cnt; cin >> pattern; vector<string> p = split(pattern, "*"); string str; string front_str, end_str; for (int i = 0; i < cnt; i++) { cin >> str; front_str = str.substr(0, p[0].length()); cout << str.length() << " " << p[1].length() << '\n'; cout << str.length() - p[1].length() << '\n'; if (str.length() - p[1].length()) { // str.length() - p[1].length() 부분이 이상한 양수값을 반환하여 // if값으로 걸러져야할 상황에도 if문 안으로 들어오고 있습니다ㅜㅜ // end_str = str.substr(str.length() - p[1].length(), str.length()); } // cout << front_str << " " << end_str << '\n'; } return 0; }//input값입니다! 1 a*dddddd abcd 선생님 제가 반정도 짠 코드인데 주석에서도 언급하듯이 str.length() - p[1].length()부분이 p[1].length()가 더 큰경우 이상한 값을 반환합니다! 이럴때 어떻게 해야하나요?
-
미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
이런 방법도 가능한가요?
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.사과나무 문제에 대해서 좌표를 잡은 다음에 즉 중앙갑을 (2,2)라는 값을 두고 abs 즉 절대값 함수를 이용하여 거리가 n/2를 이용하여 2 이하인 값의 범위 까지만 더해서 해도 괜찮은 가요? 즉 거x,y축 까지의 거리가 2 이하인 블록의 합을 구하는 방식입니다.
-
미해결코딩테스트 실전 모의고사(with C++) : 대기업 대비
정사각형 그리기 질문드립니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. dp를 작성하는 else 부분에서 배열의 범위가 벗어났다고 뜨는데, 어디가 잘 못 된건가요??? import java.io.*; import java.util.*; public class Main { public static void main(String[] argvs) { Scanner sc = new Scanner(System.in); int n=sc.nextInt(); int m=sc.nextInt(); int[][] map = new int[n][m]; int[][] dp = new int[n][m]; for(int i=0; i<n; i++) { String s=sc.next(); for(int j=1; j<=m;j++) { map[i][j]=s.charAt(j)-'0'; } } for(int i=0; i<n ; i++) { for(int j=0; j<m; j++) { if(map[i][j]==0) dp[i][j]=0; else { //에러 부분(배열 범위 벗어남) int a=map[i-1][j]; int b=map[i][j-1]; int c=map[i-1][j-1]; int k = Math.min(a, Math.min(b, c)); dp[i][j] = k; } } } } }
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
구현 알고리즘이 부족한데 계속 진도를 빼도 괜찮을까요?
안녕하세요 선생님.구현 알고리즘에 대해 취약한 것 같아 질문 드립니다.현재 1-O까지 풀면서 답안을 안 보고 푼건은 2번 정도인 것 같습니다. 구현 유형의 알고리즘이 약하다고 생각됩니다. 이런 와중에 2주차 그래프이론을 바로 학습하는게 맞을지, 아니면 구현 관련 알고리즘을 좀 더 찾아서 풀어보는게 맞을지 잘 모르겠습니다.
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3-D 문제 질문있습니다
안녕하세요 선생님,올려주신 강의 잘 듣고 있습니다.BFS를 이용하여 3-D 문제를 풀고 있습니다. http://boj.kr/c6c17d2eb9a749febe75792df0897cafTree 깊이가 변할 때마다 fire() 라는 함수를 사용하여 불의 위치를 업데이트하는 방법으로 구현했습니다.예제는 잘 통과하는데, 성공하지 못했습니다. 혹시 반례를 알 수 있을까요?감사합니다.
-
해결됨코딩테스트 [ ALL IN ONE ]
코테 볼때 언어제한
파이썬 이외의 언어로 제한해서 보는 기업이 많을까요?
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
7-x_1480 질문 있습니다
재귀를 이용해서 dp를 하는 방식이 아닌 선생님께서 배낭채우기 할 때 처럼 표를 완성하여 dp를 했는데 무엇이 문제 인지 잘 모르겠습니다. 이 문제에서는 표에 넣을 수 있는 보석의 인덱스를 저장을 했고표가 완성되면 넣어준 보석을 보석목록에서 제거하고 다음 가방을 완성하는 방식으로 코드를 작성했는데 무엇이 문제인지 잘 모르겠습니다.http://boj.kr/2b01ce15326a43c9ad3c8f340157eab3
-
해결됨2주만에 통과하는 알고리즘 코딩테스트 (2024년)
바텀업 DP 수업 자료
안녕하세요! 강의 수강하고, 탑다운을 바텀업으로 변경하는 부분이 잘 이해가 가지 않아, 정답 코드를 보며 이해해보려고 하는데 수업자료에 코드가 없습니다.수업자료에 정답 코드 추가해주실 수 있으신가요?수업 재미있게 듣고 있습니다! 항상 감사합니다.
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3-E 질문 있습니다.
현재 큰돌 강사님이 풀어주신 문제 해설은 이해 됐습니다. 그런데 scv갯수가 주어지고 한 개체를 한번에 여러번 공격을 못하기에 (모든 scv의 총 체력/한번에 줄 수 있는 데미지)이렇게 해서 구할 수도 있지 않을까 했습니다. 이를 바탕으로 코드를 썻으나 틀렸다고 나오는데 이게 왜 되지 않는지 몰라서 질문드립니다. 다음은 해당 코드입니다. http://boj.kr/dab5e07b909146eba418c449e7c219f9
-
미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
TimeLimit 문의 드립니다
로직은 다르지만 의미는 강의와 비슷하게 구현한듯 한데 타임리밋이 발생하여 문의 드립니다. 어떤 부분이 잘못된 걸까요?public class 송아지찾기 { int count = 0; boolean visited[] = new boolean[10001]; public int BFS(int s ,int e) { Queue<Integer> queue = new LinkedList<>(); queue.add(s); while (!queue.isEmpty()) { int size = queue.size(); for (int i = 0; i < size; i++) { Integer poll = queue.poll(); visited[poll] = true; if (poll + 1 < 1000 && !visited[poll + 1]) { if (poll + 1 == e) { return count + 1; } queue.add(poll + 1); } if (poll + 5 < 10000 && !visited[poll + 5]) { if (poll + 5 == e) { return count + 1; } queue.add(poll + 5); } if (poll - 1 > -1 && !visited[poll - 1]) { if (poll -1 == e) { return count + 1; } queue.add(poll - 1); } } count++; } return count; }
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
1-A break 질문
http://boj.kr/2824498d59514215a51a4c55417f5914제가 쓴 코드입니다 선생님! j로 순회하고있는 for loop안에서 break를 했음에도 i로 순회하는 밖에 있는 for loop까지 나올 수 있는 이유가 무엇인가요?
-
미해결코딩테스트 실전 모의고사(with C++) : 대기업 대비
호텔연결
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.테스트케이스 4번, 5번에서 에러가 뜹니다.어디가 잘 못 된건지 궁금합니다.import java.io.*; import java.util.*; class Node implements Comparable<Node>{ int v1; int v2; double c; Node(int v1, int v2, double c) { this.v1=v1; this.v2=v2; this.c=c; } @Override public int compareTo(Node o) { //double형은 이렇게 한다. if(this.c<o.c) return -1; else return 1; } } public class Main { public static int n,m; public static int[] unf; public static ArrayList<Node> graph = new ArrayList<>(); public static ArrayList<Integer> x = new ArrayList<>(); public static ArrayList<Integer> y = new ArrayList<>(); public static int find(int v) { if(v==unf[v]) return v; else return unf[v] = find(unf[v]); } public static void union(int a, int b) { int fa = find(a); int fb = find(b); if(fa!=fb) unf[fa] = fb; } public static void main(String[] argvs) { Scanner sc = new Scanner(System.in); n=sc.nextInt(); m=sc.nextInt(); unf = new int[n]; for(int i=0; i<n; i++) unf[i] = i; for(int i=0; i<n; i++) { int a=sc.nextInt()-1; int b=sc.nextInt()-1; x.add(a); y.add(b); } for(int i=0; i<n; i++) { //점과 점 사이의 거리를 구하는 구문 for(int j=i+1; j<n; j++) { double dis = Math.sqrt((x.get(j)-x.get(i)) *(x.get(j)-x.get(i)) + (y.get(j)-y.get(i)) * (y.get(j)-y.get(i))); graph.add(new Node(i,j,dis)); } } for(int i=0; i<m; i++) { //이미 연결되어 있는 점들은 union해준다 int a=sc.nextInt(); int b=sc.nextInt(); union(a-1,b-1); } Collections.sort(graph); double answer=0; for(int i=0; i<graph.size(); i++) { //크루스칼 int fa = find(graph.get(i).v1); int fb = find(graph.get(i).v2); double cost = graph.get(i).c; if(fa!=fb) { //union(fa, fb); unf[fa] = fb; answer+=cost; } } System.out.format("%.2f", answer); //소수점 출력은 System.out.format으로 } }
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
6-G 질문드립니다!!
안녕하세요 선생님.예제도 다 맞는데 4%에서 틀렸습니다.가 나옵니다 ㅠㅠ제 코드에 어느 부분이 문제인지 모르겠어서 질문드립니다..아래는 제가 제출한 코드입니다.#include<bits/stdc++.h> using namespace std; typedef long long ll; ll x, y, z, lo, hi, ret = -1; bool check(ll mid) { ll change_z = (double)(y + mid) / (x + mid) * 100; return change_z > z; } int main() { cin >> x >> y; // x : 게임 횟수, y : 이긴 횟수, z : 승률(y / x * 100) z = (double)y / x * 100; lo = 1; hi = 1e9; while(lo <= hi) { ll mid = (lo + hi) / 2; if(check(mid)) { hi = mid - 1; ret = mid; } else lo = mid + 1; } cout << ret << "\n"; }
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
makePermutation 질문합니다
재귀함수에는 기저사례가 있어야 재귀가 풀리는것은 이해를 했습니다. 제 궁금증은 왜 r값이 depth값과 같으면 재귀가 풀리는지 이해가 가지않습니다. r값과 depth값의 상관관계가 궁금합니다!
-
미해결코딩테스트 실전 모의고사(with C++) : 대기업 대비
중복된 문자 제거 코드
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.c++코드를 자바로 변형했는데, 해시맵 오류가 뜹니다.잘못 변형한 곳이 어디인지 궁금합니다.import java.io.*; import java.util.*; public class Main { public static void main(String[] argvs) { Scanner sc = new Scanner(System.in); String s=sc.next(); s=s.toUpperCase(); LinkedList<Character> res = new LinkedList<>(); HashMap<Character, Integer> map = new HashMap<>(); for(char x : s.toCharArray()) { map.put(x, map.getOrDefault(x, 0)+1); } for(char x : map.keySet()) { System.out.println(x+": "+map.get(x)); } HashMap<Character, Integer> ch = new HashMap<>(); for(char x: s.toCharArray()) { map.put(x, map.get(x)-1); if(ch.get(x)==1) continue; while(res.size()!=0 && res.peekLast()>x && map.get(res.peekLast())>0) { ch.put(res.peekLast(),ch.get(res.peekLast()-1)); //if(ch.get(res.peekLast())==0) ch.remove(res.peekLast()); res.pollLast(); } res.addLast(x); ch.put(x, ch.get(x)+1); } for(int i=0; i<res.size(); i++) System.out.print(res.get(i)); } }
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
강의 공부 순서
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.안녕하세요 강사님 이번에 처음 구매했는데, 공부순서를 어떻게 하면 좋을까요 ? 교안을 먼저 보고 교안에 있는 내용들을 충분히 숙지한 후에 동영상강의를 듣는게 맞을까요? 그리고 저는 C를 어느정도 공부한 후 C++은 문법만 살짝 맛봤는데, 강의 내용이 처음부터 알고리즘에 관한 내용이 나와서 어려운 부분이 꽤 많습니다 ㅠㅠ 추천해주실만한 공부순서 있으면 부탁드립니다.
-
미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
트리 레벨 체크로는 안되는건가요??
예전 BFS 영상에서 최단 경로 길이를 구하기 위해서는 트리 레벨 체크를 활용하는 것을 보고 이번에도 큐 사이즈 만큼 반복을 돌아서 트리 레벨을 체크 하는 방식으로 구현하였는데프로그램에선 12로 잘 나오지만, 채점에선 오류가 떠서 이 방식으론 안되는지 궁금합니다.. 또, 강의를 들으면서 배열에 +1씩 추가하는 아이디어를 보고 기존의 배열에서 +1씩 해주어 수정한 결과는 통과하였는데, DIS배열을 하나 더 만든 이유도 궁금합니다! 추가로 젤 윗 이야기인 큐 사이즈 만큼 반복하여 레벨을 체크하는 상황과 배열에 +1씩 하여 넓혀가는 상황의 구별을 어떻게 할 수 있을지도 궁금해졌습니다... 감사합니다 import java.awt.*; import java.util.LinkedList; import java.util.Queue; import java.util.Scanner; public class In_8_11 { static int[][] matrix = new int[8][8]; static int[] dx = {-1, 0, 1, 0}; static int[] dy = {0, 1, 0, -1}; static int level; public static int BFS(int x, int y) { Queue<Point> Q = new LinkedList<>(); // 가장 처음 큐에 넣기 Q.offer(new Point(x,y)); matrix[1][1] = 1; // 출발지점 꼭 걸어줘야함. // 시작 while( !Q.isEmpty()){ for (int j = 0; j < Q.size(); j++) { Point P = Q.poll(); System.out.println("( "+P.x + " , " + P.y+" )"); if (P.x == 7 && P.y == 7){ //return matrix[7][7] -1; return level; } for (int i = 0; i < 4; i++) { int nx = P.x + dx[i]; int ny = P.y + dy[i]; if (1 <= nx && nx <= 7 && 1 <= ny && ny <= 7) { if (matrix[nx][ny] == 0) { matrix[nx][ny] = 1; //matrix[nx][ny] = matrix[P.x][P.y] +1; // 뺄 필요 없을 거 같은데? Q.offer(new Point(nx, ny)); } } } }level++; } return -1; } public static void main(String args[]) { Scanner sc = new Scanner(System.in); for(int i = 1; i <= 7; i++){ for(int j = 1; j <= 7; j++) { matrix[i][j] = sc.nextInt(); } } System.out.println( BFS(1, 1) ); } }
-
해결됨2주만에 통과하는 알고리즘 코딩테스트 (2024년)
냅색 12865 시간초과
심화>최적화(재귀, 백트래킹의 경우의 수) 강의 4번문제를 풀었는데, 백준에 제출하면 계속 시간초과가 뜨네요..!import sys sys.setrecursionlimit(10**6) input = sys.stdin.readline n, k = map(int, input().split()) stuff = [list(map(int, input().split())) for _ in range(n)] value = 0 def recur(idx, tw, tv): global value if tw > k: # 무게 초과 return if idx == n: value = max(value, tv) return recur(idx+1, tw+stuff[idx][0], tv+stuff[idx][1]) recur(idx+1, tw, tv) recur(0, 0, 0) print(value)수업자료를 참고하고 싶은데, mp4로 올라와있어서 질문 남깁니다.시간초과를 어떻게 하면 피할 수 있을까요?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
7-S 시간초과 질문드립니다 !!
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요. 강사님강의 잘 듣고 잇습니다.강평 별5개 드렸습니다 항상 감사합니다 ^^강의도 들어보았고, 제가 작성한 코드와 로직은 같은 것이라고 저는 생각하는데.. 제출시 시간초과가 떠서요.. 무엇이 잘못됫는지 여쭙고 싶습니다.감사합니다. #include <bits/stdc++.h> using namespace std; string S; bool DP[2505][2505]; // 시작과 끝에 대한 팰린드롬 문자열의 길이 int DP2[2505]; #define INF 987654321 bool go(pair<int, int> Q){ if (Q.first >= Q.second){ return true; } bool& ret = DP[Q.first][Q.second]; if(ret) return ret; if (S[Q.first] == S[Q.second]){ ret = go({Q.first+1, Q.second-1}); } return ret; } int go2(int here){ if(here >= S.size()) return 0; int &ret = DP2[here]; if(ret != INF) return ret; for(int i = here; i < S.size(); ++i){ if (DP[here][i]){ ret = min(ret, go2(i+1)+1); } } return ret; } int main(){ cin.tie(NULL); cout.tie(NULL); ios_base::sync_with_stdio(false); cin >> S; for(int i =0 ; i < S.size(); ++i){ DP[i][i] = 1; for(int j = i+1; j < S.size(); ++j){ go({i,j}); } } fill(DP2, DP2+2505, INF); cout << go2(0); return 0; }
-
해결됨독하게 C를 배운 사람을 위한 선형 자료구조
섹션4 자료 자체와 정렬된 인덱스 분리 내용 질문
안녕하십니까? 강사님!초보자의 문득 드는 생각으로 질문드립니다. "섹션4 자료 자체와 정렬된 인덱스 분리" 강의의 MakeIndexAge함수 내용중에 USERDATA** aList;aList = malloc(sizeof(USERDATA*) * GetListCount());memset(aList, 0, sizeof(USERDATA*) * GetListCount()); 위의 코드를 그냥 이렇게 작성하면 안될까요?USERDATA** aList[GetListCount()]={0};잘몰라서 드리는 질문입니다.이해해 주시길 바랍니다수고하십시오