묻고 답해요
167만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
5-A 백준 순회공연 질문드립니다.
#include <bits/stdc++.h> using namespace std; typedef pair<int,int> pp; typedef map<int,int> m; priority_queue<int, vector<int>,greater<int>> pq; void l(){ cout << "------- " << endl;} int n; vector<pp> v; // day 정렬 bool cSort(const pp &a, const pp &b){ if(a.second != b.second){//sort by day return a.first < b.first; } return a.second > b.second; //sort by money } //input void i(){ cin >> n; int d,p; for(int i=0; i<n; i++){ cin >> p; cin >> d; v.push_back({d,p}); } sort( v.begin(), v.end() ); } //solution void s(){ int money=0; for(pp dp : v){ pq.push(dp.second);//price if(pq.size() > dp.first) pq.pop();// pop } while(!pq.empty()){ money += pq.top(); pq.pop(); } cout << money; } void sol(){ i();s(); } int main() { sol(); return 0; } 위 코드에서 cSort를 써서 소팅 하게 되면 틀리는데 혹시 어떤 문제인지 여쭤봐도 될까요? sort( v.begin(), v.end() ); 평범하게 소팅하면 통과가 되는데, cSort로 order by date, price로 정렬하면 에러가 터집니다.
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-L 질문있습니다!
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.스스로 코드를 짜고 틀려서 한자리 입력에서 잘못된 것 같아서 반례를 계속 실행하던 중 특이한 점을 발견했습니다.반례 중31 1:02 1:12 2:0을 사용해서 실행해봤습니다. 이때 제 코드가 계속 올바른 답이 나오지 않아서 선생님이 해주신 코드로 했을 때도 특이하게 실행 결과가00:0046:00다음과 같이 나옵니다. 제출했을 때는 맞았다고 뜨긴합니다...제가 생각한 예제가 아예 잘못 생각한 예제인지 궁금합니다.
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
1-N 분배법칙 질문
*, %는 연산자 우선순위가 같으니까6:00 부근쯤 설명한 분배법칙을 적용하려면 해당 코드를 변경(주석처리 부분)해야 하는것 아닌가요? typedef long long ll; ll go(ll a, ll b, ll c) { if (b == 1) { return a % c; } ll ret = go(a, b / 2, c); //ret = (ret * ret) % c; ret = ret % c * ret % c; if (b % 2) { ret = (ret * a) % c; } return ret; }
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
맞왜틀! 반례가 궁금합니다!ㅠㅠ
http://boj.kr/91c2421aa3ef471eac5950368d3428c1이렇게 코드를 작성하였더니 주어진 테케가 잘 돌아가는데 틀린 이유가 궁금합니다ㅜㅜ 반례도 생각해보았는데 다 잘 돌아가서 뭐가 문젠지 모르겠어서요ㅠㅠ항상 잘 듣고 있습니당 감사합니다 ㅎㅎ
-
미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
코드 리뷰 부탁드립니다
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. function solution(s, arr) { const cache = Array.from({ length: s }).fill(0); for (let i = 0; i < arr.length; i++) { // cache miss if (!cache.includes(arr[i])) { cache.unshift(arr[i]); cache.pop(); } // cache hit else { const idx = cache.indexOf(arr[i]); const temp = cache[idx]; let j; for (j = idx - 1; j >= 0; j--) { cache[j + 1] = cache[j]; } cache[j + 1] = temp; } } return cache; } let arr = [1, 2, 3, 2, 6, 2, 3, 5, 7]; console.log(solution(5, arr)); // 7 5 3 2 6 최악의 경우 O(N^2)인 거 같은데 맞나요 ?
-
해결됨[자바/Java] 문과생도 이해하는 DFS 알고리즘! - 입문편
백준 24479 문제 시간 초과 질문 드려요
안녕하세요 백준에서 테스트 결과 시간 초과 오류가 납니다 . 확인 한번 가능할까요?import java.io.*; import java.util.*; public class Main { static final int MAX = 100000 + 10; static int N, M, R; static ArrayList<Integer>[] graph; static boolean[] visited; static int[] answer; static int order; public static void dfs(int idx) { visited[idx] = true; answer[idx] = order; order++; for (int i = 0; i < graph[idx].size(); i++) { int next = graph[idx].get(i); if (visited[next] == false) dfs(next); } } public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); StringTokenizer st = new StringTokenizer(br.readLine()); N = Integer.parseInt(st.nextToken()); M = Integer.parseInt(st.nextToken()); R = Integer.parseInt(st.nextToken()); graph = new ArrayList[MAX]; for (int i = 1; i <= N; i++) { graph[i] = new ArrayList<>(); visited = new boolean[MAX]; answer = new int[MAX]; order = 1; } for (int i = 0; i < M; i++) { st = new StringTokenizer(br.readLine()); int x = Integer.parseInt(st.nextToken()); int y = Integer.parseInt(st.nextToken()); graph[x].add(y); graph[y].add(x); } for (int i = 1; i <= N; i++) { Collections.sort(graph[i]); } dfs(R); for (int i = 1; i <= N; i++) { bw.write(String.valueOf(answer[i])); bw.newLine(); } bw.close(); br.close(); } }
-
미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
곳감(모래시계) 질문
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요. 다음과 같이 코딩을 작성했는데, rotation 이 자꾸 이상하게 되네요.. 도대체 어느부분이 잘못된건지 잘 모르겠습니다 ㅜㅜn = int(input()) a = [list(map(int, input().split())) for _ in range(n)] m = int(input()) temp = [] for _ in range(m): h, t, k = map(int, input().split()) temp = a[h-1] #temp에 원래 값 저장 if t == 0: for i in range(n): #temp에서 꺼내와 index값 변경 if i-k < 0: a[h-1][i] = temp[i-k+n] else: a[h-1][i] = temp[i-k] else: for i in range(n): if i+k >= n: a[h-1][i] = temp[i+k-n] else: a[h-1][i] = temp[i+k] print(a) sum = 0 s = 0 e = n for i in range(n): for j in range(s, e): sum += a[i][j] if n//2 > i: s += 1 e -= 1 else: s -= 1 e += 1 print(sum)
-
해결됨코딩테스트 [ ALL IN ONE ]
다익스트라질문
[코테 적용] 👉 [Network Delay Time] (후반부) 에서요.파란색 박스 제외하고 빨간색 박스에서만 pq에서 정렬일어나는거 맞나요?
-
해결됨2주만에 통과하는 알고리즘 코딩테스트 (2024년)
다익스트라 강의 관련 질문이 있습니다.
설명해주신 다익스트라 알고리즘 코드를 보면32~33번째 줄에서 아래 조건이 만족하면 무조건 우선순위 큐에 nxt 정점이 추가되는데요.if dist[node] + weight < dist[nxt] 이런 경우 nxt 까지 도달할 수 있는 거리 정보가 업데이트 될 때마다, 우선순위 큐에 nxt 노드가 중복으로 삽입될 수 있는 것 같은데요 질문 1.visit 여부를 확인하는 방식 등으로 우선 순위 큐에 중복으로 넣는 코드를 제거할 수 있을 것 같은데, visit 배열이 빠진 이유가 있나요? 질문 2.그리고 우선순위큐에 중복으로 노드가 존재하게되어도 동작이나 성능 측면에서 문제가 없을지 궁금합니다
-
미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
피자 배달거리 DFS 시간초과 문제
import java.util.ArrayList; import java.util.Scanner; class Main { static int N, M, dis, min, sum, answer; static ArrayList<Point> houses, pizzas; static Point[] spizzas; static int[] ch; public static void main(String[] args) { Main T = new Main(); Scanner sc = new Scanner(System.in); N = sc.nextInt(); M = sc.nextInt(); spizzas = new Point[M]; houses = new ArrayList<>(); pizzas = new ArrayList<>(); answer = Integer.MAX_VALUE; for (int i = 0; i < N; i++) { for (int j = 0; j < N; j++) { int tmp = sc.nextInt(); if (tmp == 1) { houses.add(new Point(i, j)); } if (tmp == 2) { pizzas.add(new Point(i, j)); } } } ch = new int[pizzas.size()]; T.DFS(0); System.out.println(answer); } void DFS(int L) { if (L == M) { sum = 0; for (Point house : houses) { min = Integer.MAX_VALUE; for (Point pizza : spizzas) { dis = Math.abs(house.x - pizza.x) + Math.abs(house.y - pizza.y); if (Math.min(min, dis) == dis) { min = dis; } } sum += min; } if (Math.min(sum, answer) == sum) { answer = sum; } } else { for (int i = 0; i < pizzas.size(); i++) { if (ch[i] == 0) { ch[i] = 1; spizzas[L] = pizzas.get(i); DFS(L + 1); ch[i] = 0; } } } } } class Point { int x; int y; public Point(int x, int y) { this.x = x; this.y = y; } }선생님의 풀이와는 다르게 체크드리스트를 만들어 DFS구현을 하였고 답이 잘 나오긴 하는데 채점사이트에서는 시간초과 문제가 나오네요 ㅜㅜ 혹시 문제가 어떤 것인지 알 수 있을까요??
-
미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
이렇게 코드를 작성해도 삽입 정렬인가요?
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. function solution(arr) { for (let i = 1; i < arr.length; i++) { for (let j = i; j > 0; j--) { if (arr[j] < arr[j - 1]) { [arr[j - 1], arr[j]] = [arr[j], arr[j - 1]]; } } } return arr; } let arr = [11, 7, 5, 6, 10, 9]; console.log(solution(arr));
-
미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
x.length()-1 질문
안녕하세요! 단어 뒤집기에서 x.length()-1 코드중 x의 길이를 사용하는게 이해가 안됩니다. ㅠㅜ str.length()-1을 사용하는게 아니라 x.length()-1를 사용하는 이유가 뭔가요?for(String x : str) { char[] s = x.toCharArray(); int lt=0, rt=x.length()-1; }
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2910번 질문 드립니다.
큰돌님 안녕하세요. 저는 이 문제를 map을 쓰지 않고 그냥 vector에서 find_if함수를 이용하여 풀었는데요. 제가 생각했을때에 sort한다면 입력받는 순서대로 vector에 push하게 되니까 먼저 나온것이 앞에 있어야된다는 조건을 자동적으로 처리될꺼라 생각했는데 오류가 났습니다. 그래서 stable_sort를 사용하여 결국 풀긴했는데 왜 그냥 sort는 안되는 것일까요? 소스코드 : http://boj.kr/84577fb3c0724cc3954dfd6ccfa2b412
-
해결됨코딩테스트 [ ALL IN ONE ]
사용하고 계신 폰트 이름 알 수 있을까요?
vs코드 상에서 제가 쓰고 있는 기본 폰트는 l하고 1 이 헷갈리게 입력되어서 폰트를 바꾸고자 합니다혹시 강사님께서 사용하고 계신 폰트 이름을 알 수 있을까요?
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
이 코드에서 erase 함수는 불필요할까요?
http://boj.kr/a89a03fa7dcd4e108a3576e95e177b5c 이 코드는 강의를 보기 전에 제가 자력으로 풀어본 코드입니다. 인접리스트로 트리를 구현하고, 지울 노드를 입력할 시 erase 함수를 통해 해당 노드의 하위 트리를 모두 삭제한 후 지울 노드를 삭제합니다. 그 후에 calculate 함수를 통해 값을 구하는데요, 강의에서 dfs 하나만으로 푸시는걸 보니 굳이 erase가 필요할까 싶기도 했네요.. 무식하게 일단 풀어본다는게 이렇게 된거 같은데 여기서 좀 더 코드를 다듬을 수 있을까요?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
DFS로는 맞춰서 BFS로 풀어보았습니다!
BFS로 풀었을 때 답은 맞는데 제출하면 메모리 초과로 틀렸다고 나오는데,혹시 이 코드에서 메모리를 줄여서 맞힐 수 있는 방법이 있는지 여쭤보고 싶습니다!#include<bits/stdc++.h> using namespace std; int N; const int dy[4] = {-1,0,1,0}; const int dx[4] = {0,1,0,-1}; const int max_n = 100; int arr[max_n][max_n]; int visited[max_n][max_n]; int x,y; int Max = 0; int main(){ cin >> N; fill(&arr[0][0], &arr[0][0] + max_n*max_n, 0); for(int i = 0; i < N; i++){ for(int j = 0; j < N; j++){ cin >> arr[i][j]; } } for(int h = 1; h <= 100; h++){ int cnt = 0; fill(&visited[0][0], &visited[0][0] + max_n*max_n, 0); for(int i = 0; i < N; i++){ for(int j = 0; j < N; j++){ if(arr[i][j] >= h && visited[i][j] == 0){ queue<pair<int,int>> q; q.push({i,j}); cnt++; while(q.size()){ tie(y,x) = q.front(); q.pop(); visited[y][x] = 1; for(int n = 0; n < 4; n++){ int ny = y + dy[n]; int nx = x + dx[n]; if(ny < 0 || ny >= N || ny < 0 || ny >= N){ continue; } if(arr[ny][nx] < h){ continue; } if(visited[ny][nx]){ continue; } q.push({ny,nx}); } } } } } Max = max(Max, cnt); } cout << Max; return 0; }
-
미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
시간 초과
import java.util.*; class Main{ public int[] solution(int N, List<Integer> A, int M, List<Integer> B) { ArrayList<Integer> answer = new ArrayList<>(); Collections.sort(A); Collections.sort(B); for(int key : B) { if(A.contains(key)) { answer.add(key); } } return answer.stream() .mapToInt(Integer::intValue) .toArray(); } public static void main(String args[]) { Main T = new Main(); Scanner sc = new Scanner(System.in); int N = sc.nextInt(); List<Integer> A = new ArrayList<>(); for(int i = 0; i < N; i++) { A.add(sc.nextInt()); } int M = sc.nextInt(); List<Integer> B = new ArrayList<>(); for(int i = 0; i< M; i++) { B.add(sc.nextInt()); } for(int answer : T.solution(N, A, M, B)) { System.out.print(answer + " "); } } }안녕하세요. 이와 같이 코드를 짰는데, 케이스 4에서 시간초과가 나왔습니다. 이에 대해 저는 다음과 같은 가설을 세워봤습니다.Collections 클래스의 sort를 하는 시간이 Arrays 클래스의 sort 시간 보다 오래 걸린다.입력되는 배열을 ArrayList로 한 것이 배열보다 더 메모리를 많이 사용하므로 시간이 더 오래 걸린다.아직 자료구조에 대한 이해와 시간 복잡도에 대해서 기본이 부족한 것 같습니다..! 감사합니다.
-
해결됨코딩테스트 [ ALL IN ONE ]
파이썬에서의 재귀
글에 두서가 없어도 양해 바랍니다 이 수업 수강 이전에 코딩 문제를 풀 때 파이썬으로 재귀함수를 사용했던 적이 있습니다. 그때 알게 된것이 파이썬의 재귀함수에는 기본적으로 깊이의 제한이 있다는 것입니다. sys.recursionlimit()으로 확인해보니 재귀호출을 1000이상 못하도록 값이 제한되어 있고 이 값을 늘려서 사용하는것은 별로 추천되는 방법이 아닌걸로 알고 있습니다. C언어 사용할때에는 속도면에서 제한도 없고 파이썬보다 속도도 월등하다보니 재귀를 자주 사용했었는데 파이썬에서 재귀함수로 풀어야 하는 경우가 있을까요?
-
미해결it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비
섹션5 7번 문제 알리바바와 40인의 도둑 설명이 잘못된건지 제가 잘못 이해하는 건지 확인 부탁드립니다.
안녕하세요, 섹션5 7번 문제 알리바바와 40인의 도둑 설명 중에, 오른쪽 또는 아래쪽으로만 간다고 말씀하셨는데,만약 돌다리가 아래와 같이 주어지면, 7*7 행렬에, 0 index 부터 시작한다고 했을 때,1 9 9 9 1 1 11 1 1 1 9 9 19 9 9 9 9 9 19 9 9 9 9 9 19 9 9 9 9 9 19 9 9 9 9 9 19 9 9 9 9 9 1이 경우에는 (0,0)->(1,0)->(1,1)->(1,2)->(1,3)->(1,4)->(위로 이동)->(0,4)->(0,5)->(0,6)->...이렇게 해서 위로 이동하는 경우가 있어야 최소 비용으로 갈 수있는 것 아닌가요?....
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
1-K 질문드립니다
안녕하세요 선생님 강의 잘 보고 코테 준비중입니다http://boj.kr/0e551d7f960a46a0a8bda8fc069bcc401% 부터 틀리는게 뭐가 문제일까요?반례들 넣어보면 잘 나오는거 같거든요답변 좀 부탁드립니다~