묻고 답해요
167만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결자바(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}]);혹시 추가적으로 설명해 주실수 있을까요?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
부트캠프 코테 준비
안녕하세요 현재 ssafy를 목표로 코딩테스트를 준비하려고 합니다.1달도 남지 않은 시점에서 해당 강의를 어디까지 목표로 하고 들으면 좋을까요?
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3-j 질문 있습니다
자꾸 컴파일 에러가 나는데 어디가 문제인지 모르겠습니다 ㅜhttp://boj.kr/b4933bac5f0d4f0292717ee00279844a
-
해결됨코딩테스트 [ ALL IN ONE ]
while TypeError: argument of type 'int' is not iterable 에러 질문입니다
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.안녕하세요 ~!파이썬 초보라 선생님 코드를 그대로 따라해 실행해보고 있는데요.def dict2(nums): # 가장긴 연속된변수를 여기다 저장할거임 longest = 0 dictionary = {} for num in nums: dictionary[num] = True for n in dictionary: # n보다 앞에 있는애가 있나? # 시작점 판별하는 조건문! if n-1 not in dictionary: cnt = 1 # 시작하면 일단 카운트1 target = n + 1 while target in n: # 연속된 값있는지! target += 1 # 다음 수 찾아야돼서 +1 cnt += 1 longest = max(longest, cnt) return longest nums = [100, 4, 200, 1, 3, 2] print(dict2(nums)) 코드실행시 다음과 같은 에러가 발생합니다.TypeError: argument of type 'int' is not iterable어떻게 해결해야될까요?그리고 max 함수가 최댓값을 가져온다고 하던데 longest가 어차피 0이면 max(cnt)만 해도 되지 않나요?
-
미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
크레인 인형뽑기(카카오) 왜 오답이 뜨는지 모르겠어요 ㅠㅠ
package hello; import java.util.ArrayList; import java.util.List; import java.util.Scanner; import java.util.Stack; public class Main { public int solution(int n, int[][] board, int m, int[] moves) { Stack<Integer> baguny = new Stack<>(); int count = 0; //크레인 for(int i=0; i<moves.length; i++) { //크레인 작동위치에서 인형빼와서 바구니에 담기 for(int j=0; j<board.length; j++) { if(board[j][moves[i]-1] != 0) { if(baguny.contains(board[j][moves[i]-1])) { baguny.pop(); count += 2; board[j][moves[i]-1] = 0; break; } else { baguny.push(board[j][moves[i]-1]); board[j][moves[i]-1] = 0; break; } } } } return count; } public static void main(String[] args) { Main t = new Main(); Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int[][] board = new int[n][n]; for(int i=0; i<n; i++) { for(int j=0; j<n; j++) { board[i][j] = sc.nextInt(); } } int m = sc.nextInt(); int[] moves = new int[m]; for(int i=0; i<m; i++) { moves[i] = sc.nextInt(); } System.out.println(t.solution(n, board, m, moves)); } }