묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨코딩테스트 [ 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% 부터 틀리는게 뭐가 문제일까요?반례들 넣어보면 잘 나오는거 같거든요답변 좀 부탁드립니다~
-
해결됨코딩테스트 [ ALL IN ONE ]
연결리스트 -1 번 강의에서 질문입니다!
class LinkedList(object):선언한 뒤에linkedlist = LinkedList()이렇게 선언을 하는데 object 는 안써도 되는건가요? ㅠㅠ
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
1 - K 배열의 크기에 대해 질문 드립니다.
안녕하세요.문제에서 알파벳 대문자 문자열을 입력받고각 알파벳의 갯수를 배열을 통해서 세고 있는데이때 배열의 크기를 알파벳 갯수와 같은 26으로 하지않고200으로 하는 이유는 무엇입니까?
-
미해결알고리즘 코딩테스트 문제풀이 with JAVA (난이도 - 브론즈 4,5)
안녕하세요. IDE 질문 있습니다.
안녕하세요. 자바 문법 배워보고자 강의 영상을 보고 있습니다. 인텔리제이를 사용하시는 것 같은데, VS code 환경에서도 스크린샷과 같은 기능을 이용할 수 있을까요? 저도 ctrl+c,v로 BOJ1000 파일을 복사했는데 선생님처럼 팝업은 안뜨고 무정하게 copy로 이름만 바뀐 놈이 나옵니다....혹시 아신다면 추천 부탁드립니다. 그리고 자바 환경 IDE로 이클립스를 추천받았는데 그냥 VS code로 수업 진행해 도 괜찮겠죠?
-
미해결it 취업을 위한 알고리즘 문제풀이 입문 (with C/C++) : 코딩테스트 대비
10 자릿수의 합 관련 질문
안녕하세요, 강사님. 10번 자릿수의 합 문제 관련해서 작은 질문이 있습니다.각 자리수의 합은 당연히 0보다 클 수밖에 없기 때문에 max의 값을 0으로 하고 문제를 풀었는데요.-2147000000 대신 0으로 해도 무방할까요?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2559수열문제 관련해서 질문이 있습니다.
i 는 1부터 시작해서 n까지 누적합을 구하는공식은 이해가됐는데그 이후에 for(int i=k; i<n; i++){ret = max(ret, psum[i] - psum[i - k]; 이부분에 대해서 그림으로 그려보려고 해도 잘 이해가 되지 않습니다..개념 강의를 참고해도 쉽지않네요혹시 이부분에 대해서 그림으로 설명 부탁드려도 될까요 -학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
-
미해결자바 코딩테스트 - it 대기업 유제
알파코드 풀이질문입니다
전문제 "ip주소"와 비슷하게 해결하였는데 이렇게 풀면 시간초과가 발생할까요?class Solution { static int n, answer; static void dfs(int L, String s) { if (L == n) { answer++; } else { for (int i = L; i < n; i++) { String temp = s.substring(L, i + 1); if (check(temp)) { dfs(i + 1, s); } else{ break; } } } } static boolean check(String str) { if (str.charAt(0) == '0') { return false; } int num = Integer.parseInt(str); return num >= 1 && num <= 26; } public int solution(String s) { answer = 0; n = s.length(); dfs(0, s); return answer; } public static void main(String[] args) { Solution T = new Solution(); System.out.println(T.solution("25114")); System.out.println(T.solution("23251232")); System.out.println(T.solution("21020132")); System.out.println(T.solution("21350")); System.out.println(T.solution("120225")); System.out.println(T.solution("232012521")); } }
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
수포자를 도와주세요ㅜㅜ
다른 분 질문에 답하신 걸 봤는데2^log(2N)= 2N이 부분이 이해가 안 가서요ㅜㅠ혹시 어떻게 나온 건지 더 자세한 풀이과정(증명) 부탁드려도 될까요?이것 때문에 로그 공부를 했지만 그래도 끝내 이해를 못 했습니다ㅠㅠ