묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
4-F질문있습니다!
안녕하세요. 선생님좋은수업 열심히 듣고 있습니다!4-F문제의 선생님 코드에 대해 질문이 있는데요. 선생님이 만든신 go함수의 기저사례는 index==26일때 발동하잖아요. 그럼 k값이 양수일때, 즉 아직 더 배울 수 있는 상황에서도 count함수를 호출하는 건가요?감사합니다!
-
미해결it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비
9번 모두의 약수 for문 질문
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.안녕하세요 처음 하는 c++수업인데 좋은 강의 잘 듣고 있습니다.선생님께서 말씀하신 i의 배수를 통해 개수를 구한다고 하셨는데for (int i = 1; i <= a; i++) { for(int j=i; j<=a; j=j+i) { cnt[j]++; }for(j=i; j<=a; j=j+i)부분 에서 j=j+i가 어떻게 i배수로 되는지 이해가 되질 않습니다. 제가 알기론 증감 부분인데 그러면 j=j+i에서 i=1, j=1일때 j=1+1로 2가 되면서 1~2로 cnt[1] cnt[2]에만 cnt[j]에 1씩 들어가고i=2일떄 j=2가 되면서 j=2+2=4가 되는데 그러면cnt[2]=2 cnt[4]=1이 되는게 맞는건가요?
-
미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
봉우리문제 if문에서 && 연산자
선생님께서 풀어주신 풀이에서if(nx>=0 && nx<n && ny>=0 && ny<n && arr[nx][ny]>=arr[i][j]){flag = 0;break;}if(flag) answer++; 이 부분에서 질문이 있습니다. if 문에서 nx, ny가 각각 0이상이고 n미만이면서 arr[i][j]보다 arr[nx][ny]가 크다면 flag를 0으로 만드는 것이고 이에 해당하지 않는거라면 다 answer++를 하는 것으로 이해했는데요.&&연산자를 써서 위 조건 중 하나라도 해당하지 않는다면 answer++ 로 이어지는 걸로 알고 있습니다. 그렇다면 arr[1][0] =3을 기준으로 봤을때 왼쪽이 arr[1][-1]가 나오기 때문에 ny<0으로 해당 if문 조건을 충족시키지 못해 answer++로 이어지는 것 아닌가요?arr[1][-1]이라면 undefined가 나올텐데 이럴 땐 어떻게 되는 지 궁금합니다. 알아서 무시해버리나요?
-
해결됨자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
정답오류가 있는것 같습니다.
안녕하세요 선생님다름이 아니라 제가 작성한 코드가 정답처리가 되었는데 이 코드는 정답이 되면 안되는 코드가 아닌가 해서 여쭤보고 싶어서 질문글 남깁니다.예를들면 첫번째 문제에서는 CBA 순서로 무조건 짜야하지만제 코드에서 str1 은 꼭 순서를 지켜야 하는 값이고str2는 C의 순서를 알 수 없는데 정답처리가 되어서 제가 작성한 코드가 제대로 정답이 맞는건지 궁금해서 질문글을 남깁니다!
-
미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
백준 17141 추가문제 입니다. 8-15번 피자문제
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요 교수님교수님께서 알려주신 8-15번 풀이를 적용하여추가문제 백준 17141 연구소 2를 풀고 있습니다그런데 어떻게 풀어도 계속 메모리 초과가 나서 뭐가 문젠지 모르겠습니다...import java.util.*;class Pointo{ int y; int x; Pointo(int y, int x){ this.y=y; this.x=x; } }public class Main { static int n; static int m; static int[][] arr; static int[] pm; static int[] dx= {0,0,+1,-1}; static int[] dy= {+1,-1,0,0}; static ArrayList<Pointo> list=new ArrayList<>(); static int answer=Integer.MIN_VALUE; public static void main(String[] args) { Scanner scanner=new Scanner(System.in); n=scanner.nextInt(); m=scanner.nextInt(); arr=new int[n][n]; pm=new int[m]; for(int i=0; i<n; i++) { for(int j=0; j<n; j++) { arr[i][j]=scanner.nextInt(); if(arr[i][j]==2) { list.add(new Pointo(i,j)); } } } dfs(0,0); if(answer!=0)System.out.println(answer); else System.out.println("-1"); } public static void dfs(int val, int next) { if(val==m) { bfs(0); return; } else { for(int i=next; i<list.size(); i++) { //list에서 m개뽑자 pm[val]=i; dfs(val+1,i+1); } } } public static void bfs(int val) { int[][] copyarr=new int[n][n]; int[][] dis=new int[n][n]; Queue<Pointo> q=new LinkedList<>(); for(int i=0; i<pm.length; i++) { int l=pm[i]; int qx=list.get(l).x; int qy=list.get(l).y; q.add(new Pointo(qy,qx)); copyarr[qy][qx]=2; } //copyarr 벽 만들기 for(int i=0; i<n; i++) { for(int j=0; j<n; j++) { if(arr[i][j]==1) { copyarr[i][j]=1; } } } while(!q.isEmpty()) { Pointo p=q.poll(); for(int i=0; i<4; i++) { int nx=p.x+dx[i]; int ny=p.y+dy[i]; if(nx>=0 && ny>=0 && nx<n && ny<n) { if(copyarr[ny][nx]!=1) { copyarr[ny][nx]=2; dis[ny][nx]=dis[p.y][p.x]+1; q.add(new Pointo(ny,nx)); } } } } count(copyarr,dis); } public static void count(int[][] arr, int[][] dis) { int maxy=0; for(int i=0; i<n; i++) { for(int j=0; j<n; j++) { if(dis[i][j]>maxy) maxy=dis[i][j]; } } answer=Math.max(maxy,answer); }}
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
입력 오류
안녕하세요.불문제에서 입력을 다르게 받아보려고 했는데 안되어서 질문드립니다. char board[1001][1001]; vector<pair<int,int>> s,f; void input(){ scanf("%d %d", &n, &m); string s; for(int i = 0; i < n; i++){ cin >> s; for(int j = 0; j < m; j++){ board[i][j] = s[j]; if(board[i][j] == 'J') s.push_back({i,j}); if(board[i][j] == 'F') f.push_back({i,j}); } } }문제될게 없어보이는데 왜 오류가 날까요??
-
미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
코드 리뷰 부탁드립니다 !!
저는 아래와 같이 코드를 짰는데 이것도 괜찮은 코드일까요??function solution(arr) { let answer = arr; let length = answer.length; while (length > 1) { for (let i = 0; i < length - 1; i++) { if (answer[i] > answer[i + 1]) [answer[i], answer[i + 1]] = [answer[i + 1], answer[i]]; } length = length - 1; } return answer; }
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
안녕하세요 제 코드에 반례가 있을까요?
문제를 풀어서 보여지는 테스트 케이스는 다 맞는데 반례가 있을까요?#include <bits/stdc++.h> using namespace std; int n; int temp; pair<int, int> team1; pair<int, int> team2; int team1total; int team2total; string mmss; int main(){ ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); cin >> n; for(int i = 0; i < n; i++){ cin >> temp >> mmss; string m = mmss.substr(0,2); string s = mmss.substr(3,2); int mm = atoi(m.c_str()); int ss = atoi(s.c_str()) + 60*mm; if(team1.first == team2.first){ if(temp == 1){ team1.first++; team1.second = ss; }else{ team2.first++; team2.second = ss; } }else if(team1.first > team2.first){ if(temp == 1){ team1.first++; }else{ team2.first++; if(team1.first == team2.first){ team1total += ss - team1.second; team1.second = 0; team2.second = 0; } } }else if(team1.first < team2.first){ if(temp == 2){ team2.first++; }else{ team2.first++; if(team1.first == team2.first){ team2total += ss - team2.second; team2.second = 0; team1.second = 0; } } } } if(team1.second != 0){ team1total += 48*60 - team1.second; }else if(team2.second != 0){ team2total += 48*60 - team2.second; } string total1Time_first = to_string(team1total / 60); string total1Time_second = to_string(team1total % 60); string total2Time_first = to_string(team2total / 60); string total2Time_second = to_string(team2total % 60); if(total1Time_first.length() == 1)total1Time_first = "0" + total1Time_first; if(total1Time_second.length() == 1)total1Time_second = total1Time_second +"0"; if(total2Time_first.length() == 1)total2Time_first = "0" + total1Time_first; if(total2Time_second.length() == 1)total2Time_second = total2Time_second +"0"; cout << total1Time_first+":"+total1Time_second << "\n"; cout << total2Time_first+":"+total2Time_second << "\n"; return 0; }
-
해결됨코딩테스트 [ ALL IN ONE ]
코딩테스트 공부 순서 질문
현재 국비학원다니며 코딩테스트 준비를 시작해보려고 하는데프로그래머스 0단계를 자바로 풀어보고있습니다.코딩테스트 준비는 파이썬으로 0단계부터 풀면서 강의를 보면 될까요?0단계도 생각보다 어렵네요..
-
미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
배열 6 뒤집은 소수 문제
강사님이 알려주신 정답에서 다른 풀이 함수만 써서 쪼금 응용했는데왜 런타임 에러가 계속 뜰까요 ㅠ한참을 고민해봐도 왜 안되는지 답이 안나오네요 ㅠ import java.util.*;class Main {public boolean isPrime(int num){if(num==1) return false;for(int i=2; i<num; i++){if(num%i==0) return false;}return true;}public ArrayList<Integer> solution(int n, int[] arr){ArrayList<Integer> answer = new ArrayList<>();for(int i=0; i<n; i++){int tmp=Integer.parseInt(new StringBuilder(arr[i]).reverse().toString());if(isPrime(tmp)) answer.add(tmp);}return answer;}public static void main(String[] args){Main T = new Main();Scanner kb = new Scanner(System.in);int n=kb.nextInt();int[] arr=new int[n];for(int i=0; i<n; i++){arr[i]=kb.nextInt();}for(int x : T.solution(n, arr)){System.out.print(x+" ");}}}
-
해결됨Do it! 알고리즘 코딩테스트 with C++
알고리즘 코딩테스트 문제풀이 강의 - 9 DNA 비밀번호 (백준 12891)
안녕하세요. C++ 강의를 보고 있는데 궁금한게 있어서 질문 드립니다. Add 함수에 myArr[0]++; 와 Remove 함수에 myArr[0]--; 이해가 안갑니다. 그리고 슬라이딩 윈도우 처리부분에 int j = i - P; 이 부분에 대해서 자세히 설명 부탁드립니다. i,P랑 같은 값인데 빼면 0이고 그 다음은 i 값이 증가해서 음수가 되는데 어떻게 처리가 되는 부분인지 이해가 안갑니다.
-
미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
시간 복잡도 궁금합니다!!
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 4중 for문을 사용하면 시간복잡도도 n^4가 되는 건가요??그렇게 된다면 이렇게 4중 for문을 사용하여 실제 코딩테스트에서도 풀이 적용할 수 있을지도 궁금합니다.
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
토요일날 네이버 코테봤는데 질문이있습니다
solution 함수를 작성하라는 문제가 있었는데 solution 함수하나로 모든걸 해결 해야하나요? 아니면 solution 함수안에 다른 함수를 만들어도 괜찮나요? 솔루션 함수 밖에 함수를 만드는건 안되나요? 코테 해설 강의나 유튜브 영상이 있으면 좋을거같아요ps.4주차 까지 들었지만 들은거지 소화는 하나도 못시켜서 0솔입니다 하하.. 열심히 해야겠네요
-
미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
코드 리뷰 부탁드립니다 !!
아래 코드도 잘 짠게 맞을까요? function solution(require, direct) { let answer; let queue = ""; for (let i = 0; i < direct.length; i++) { if (require.includes(direct[i])) queue += direct[i]; } if (queue === require) answer = "YES"; else answer = "NO"; return answer; }
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
재귀함수 질문있습니다.
선생님께서 유튜브에 올리신거같은데 인프런에서는 어느강의 인지 몰라서 여기부분에다 올립니다.https://www.youtube.com/watch?v=mzLx_NWpuSY8분 42초에는 (a*a*a)%c하게 되면 a값이 2억일때 longlong에서도 범위가 넘어가서 (a%c*a%c*a%c)를 하셔야 된다고 했는데 9분9초에서 코드를 보니까 ret=(ret*ret)%c 가 적혀있는데요. (ret*ret)%c부분에서 (ret%c*ret%c)이렇게 해야 하는거 아닌가요? 그리고 10번줄에 if(2)도 true인데 if(1)홀수일떄만 작동된다고 하셨는데 짝수일떄도 작동되는거 아닌가요?
-
미해결자바 코딩테스트 - it 대기업 유제
우선순위 큐를 활용해도 되나요?
우선순위 큐를 써서 문제를 풀었는데 채점 지원이 안되다 보니 제 논리에 허점이 있나 확인차 질문드립니다.도착지 정보와 현재 지점까지 오는데 걸리는 비용, 환승 횟수 정보를 가지고 있는 Path 클래스를 이용했습니다.static class Path implements Comparable<Path>{ int end, cost, t; public Path(int end, int cost, int t) { this.end = end; this.cost = cost; this.t = t; } @Override public int compareTo(Path p) { return this.cost - p.cost; } } public int solution(int n, int[][] flights, int s, int e, int k){ int answer = 0; ArrayList<ArrayList<Path>> list = new ArrayList<>(); for(int i = 0; i < n; i++) { list.add(new ArrayList<>()); } for (int[] flight : flights) { int start = flight[0]; int end = flight[1]; int cost = flight[2]; list.get(start).add(new Path(end, cost, 0)); } PriorityQueue<Path> pq = new PriorityQueue<>(); for (Path path : list.get(s)) { pq.add(path); } while(!pq.isEmpty()) { Path cur = pq.poll(); if(cur.t <= k && cur.end == e) { answer = cur.cost; break; } for (Path path : list.get(cur.end)) { pq.add(new Path(path.end, path.cost + cur.cost, cur.t + 1)); } } return answer == 0 ? -1 : answer; } 클래스를 만들지 않고 List<int[]> 로 만드시는 이유도 궁금합니다. 배열로 만들면 int[0]이 무엇이 의미하는지 알기 힘들지만, 클래스로 만들면 end, cost 등 변수 이름으로 표현하기더 쉬워서 좋은 것 같은데 알고리즘에는 부적합한가요?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
6 - J 놀이공원 문제 질문있습니다
안녕하세요 큰돌 강사님놀이공원 문제를 풀다가 맞왜틀엘 빠져서 한참 고민하다 이분탐색의 hi 최댓값을 1e18로 잡은게 원인임을 찾았고 600억으로 바꾸니 정답처리 되는것 까지 확인했습니다. 강사님께서는 600억을 잡으셨고 그 이유도 이해를 했는데 1e18로 잡았을때 시간초과가 났더라면 이분탐색의 연산 횟수가 늘어서 그랬는지 분석을 해봤을텐데 "틀렸습니다"가 나와버리니 그 이유를 모르겠습니다.이분 탐색에서 범위가 커진것이 왜 오답 처리가 된 것인지 그 이유가 궁금합니다. 1e18로 잡아서 틀린 오답코드http://boj.kr/475081ce3a674e36b5f5941ddcd85484 600억으로 바꿔서 맞은 정답코드http://boj.kr/9f9ba12d52124483a6b73384541c159f
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3-I 문제의 if ( ok ) break ; 에 대한 질문입니다
안녕하세요 강사님!강사님께서 풀이해주신 코드에서 32행과 34행에 있는 if(ok) break; 에 대해 질문드립니다.먼저, 제가 이해한 바로 28행에서 수빈이가 동생의 위치와 같을 때, 답(turn값)을 출력할 수 있기 때문에 break를 하고, 그 즉시 24행 반복문과 qSize기반의 반복문(22행)을 반복할 필요없이 답을 출력해야 하기 위해 32행과 34행에 break가 있다고 생각하였습니다.즉, 32행과 34행의 break는 출력하는 시간? 을 낮추기 위해 코드에 존재한다고 생각하였는데, 32행과 34행을 지우고 채점한 결과 '시간초과' 가 아닌 '틀렸습니다'라고 떴습니다. 제가 어느 부분에서 32행과 34행을 잘못 이해한건지 궁금하여서 질문드립니다!
-
미해결자바 코딩테스트 - it 대기업 유제
강사님 실전 코테에서 DP문제가 자주 나오네요 ㅠ
강사님 안녕하세요, 강사님 덕분에 기업 코테를 몇군데 합격해서 너무 감사드립니다. ^^다만, 항상 DP쪽에서 아쉬운 점수를 받아서 약간 간당간당하게 탈락한 곳도 몇군데 있는데요, 혹시 DP문제도 따로 강의를 올려주실 계획은 없으실가요? ㅠ 지금처럼 강사님의 실전 DP 강의가 나온다면, 얼마든지 돈을 주고 구매할 의향이 있습니다~!다시 한번 적중률 높은 강의를 올려주셔서 감사 합니다 !
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
bfs 안에서 enqueue의 매개변수
안녕하세요 큰돌님강의를 듣다 이해가 안되는게 있어 질문드립니다. bfs안에서 4개의 enqueue는 A,B의 물통을 채우고, 비우는것으로 이해했는데 enqueue(waterA, y, mp[{x,y}]); // A의 물통을 채운것 enqueue(x, waterB, mp[{x,y}]); // B의 물통을 채운것 enqueue(0, y, mp[{x,y}]); // A의 물통을 비운것 enqueue(x, 0, mp[{x,y}]); // B의 물통을 비운것 아래 enqueue 함수의 매개변수들이 왜 min(), max()로 하신건지 이해를 못하겠습니다.A -> B로 이동B -> A로 이동 시키는것 같은데 매개변수가 왜 아래와 같이 들어가는지 이해하지 못하겠습니다.enqueue(min(x + y, waterA), max(0, x + y - waterA), mp[{x,y}]); enqueue(max(0, x + y - waterB), min(x + y, waterB), mp[{x,y}]);혹시 추가적으로 설명해 주실수 있을까요?