묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결Do it! 알고리즘 코딩테스트 with C++
백준 11404 플로이드 문제 질문있습니다.
입력을 받을 때 for (int i = 0; i < m; ++i) { int a, b, c; cin >> a >> b >> c; for (int i = 0; i < m; ++i) { int a, b, c; cin >> a >> b >> c; if (adj[a][b] > c) adj[a][b] = c;위처럼 입력을 받았는데요여기서 adj[a][b] = c;이게 빠지면 틀렸다라고 나오는데 왜 틀린것인지 이해가 안가는데 설명 부탁드립니다..
-
미해결Do it! 알고리즘 코딩테스트 with C++
문제 85번 질문드립니다
#include<iostream>using namespace std;int T[16];int P[16];int D[16];int main() { ios::sync_with_stdio(false); cin.tie(0); cout.tie(0); //freopen("input.txt", "r", stdin); int N; cin >> N; for (int i = 0; i < N; i++) { cin >> T[i] >> P[i]; } for (int i = N - 1; i >= 0; i--) { if (i + T[i] > N) D[i] = 0; else { D[i] = max(D[i + 1], P[i] + D[i + T[i]]); } } cout << D[0];}여기서 초기화할 때 왜 0으로 하면 14프로까지 갔다가 틀렸습니다가 나오는지 잘 모르겠습니다 'i + T[i] > N' 다음 조건이 성립하면 항상 점화식의 값이 0이 나오는 것이 아닌가요?
-
미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
바둑이 승차 - bfs 시간초과
안녕하세요, 바둑이 승차를 bfs로 풀어보다가, 시간 초과 에러가 떠서 여쭤봅니다.!아래는 제 코드입니다.import java.util.*; public class Main { static class Node { int sum; int level; public Node(int sum, int level) { this.sum = sum; this.level = level; } } static int n; static int w; static int[] puppies; static int result; public int bfs() { Queue<Integer> Q = new LinkedList<>(); Q.offer(puppies[0]); Q.offer(0); int L = 0; while(!Q.isEmpty()) { int len = Q.size(); if(L==n) break; for(int i=0 ; i<len; i++) { int tmp = Q.poll(); if(tmp>w) continue; result = Math.max(tmp, result); if(L<n-1 ) { int next = puppies[L+1]; Q.offer(tmp + next); Q.offer(tmp); } } L++; } return result; } public static void main(String[] args) { Main T = new Main(); Scanner sc = new Scanner(System.in); w = sc.nextInt(); n = sc.nextInt(); puppies = new int[n]; for(int i=0; i<n; i++) { puppies[i] = sc.nextInt(); } T.bfs(); System.out.println(result); } } bfs, dfs 모두 모든 노드를 방문한다는 점에서, 같을 것 같은데, 왜 bfs는 시간 초과가 날까요.?제가 break을 놓친 부분이 있을까요?
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
선생님 2주차 개념 #9의 예제 문제 질문있습니다.
해당 코드는 제가 직접 구현한 문제 해답 코드인데요. 5 51 0 1 0 11 1 0 0 10 0 0 1 10 0 0 1 10 1 0 0 0의 테스트 케이스를 통과하도록 짜봤습니다.n * m 의 인접행렬을 만들고 1을 발견할 시 그 위치에서부터 ↑→↓←의 순으로 탐색을 하며 네 방향의 탐색을 마쳤을 때 결과가 모두 1이 아니라면 결과값을 1씩 증가시켜 답을 출력하는 코드입니다.첫번째 질문으로는 제가 구현한 코드가 너무 비효율적인 것 같습니다. 어떻게하면 이 코드에서 더 좋은 코드로 발전시킬 수 있을까요?두번째 질문으로는 제가 구현한 방식을 dfs라고 할 수 있는걸까요? 그냥 감으로 작성한 코드라서 이게 될줄 몰랐습니다..코드는 다음과 같습니다.단순히 구현만 하는것으로는 정답이겠지만 만약 이런 문제가 나온다면 시간초과나 메모리 초과가 날 게 분명해 보입니다../* 연결된 육지는 모두 오염 바다로는 갈 수 없다. 오염시킬수 있는 방향은 상 하 좌 우 네방향 최소 몇번을 이동해야 모든 육지를 오염시킬 수 있는가? 1 : 육지 0 : 바다 범위 1 <= N <= 100 1 <= M <= 100 예제 입력 입력은 맵의 세로길이 N과 가로길이 M이 주어진다. N * M의 맵이 주어진다. 5 5 1 0 1 0 1 1 1 0 0 1 0 0 0 1 1 0 0 0 1 1 0 1 0 0 0 출력 4 */ #include <bits/stdc++.h> using namespace std; const int dy[] = {-1, 0, 1, 0}; const int dx[] = {0, 1, 0, -1}; int n, m, findCount = 0; void dfs(int y, int x, int **ajm){ ajm[y][x] = 0; int check = 0; for(int i = 0; i < 4; i++){ int ny = y + dy[i]; int nx = x + dx[i]; if(ny < 0 || ny >= n || nx < 0 || nx >= n) { check++; if(check == 4){ findCount++; return; } continue;} if(ajm[ny][nx] != 1) { check++; if(check == 4){ findCount++; return; } continue; } if(ajm[ny][nx] == 1){ dfs(ny,nx,ajm); return; } } } int main(){ int num; cin >> n >> m; int **ajm = new int*[n]; for(int i = 0; i < n; i++){ ajm[i] = new int[m]; } for(int i = 0; i < n; i++){ for(int j= 0; j < m; j++){ cin >> ajm[i][j]; } } for(int i = 0; i < n; i++){ for(int j= 0; j < m; j++){ if(ajm[i][j] == 1){ dfs(i, j, ajm); } } } cout << findCount; return 0; }
-
미해결자바스크립트 알고리즘 문제풀이 입문(코딩테스트 대비)
코드 검사 부탁드립니다!
안녕하세요 이진트리 개념 듣고 강의 듣기전에 한번 풀어보았는데 이런 식으로 작성해도될까요? 틀린부분 있으면 피드백 부탁드립니다!function solution(k) { let answer = []; function dfs(n, arr) { let arr1 = [...arr, n]; if (n > k) { arr.length && answer.push(arr); return; } else { dfs(n + 1, arr); dfs(n + 1, arr1); } } dfs(1, []); return answer; }
-
미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
1-1 왜 런타임 에러가 나오는지 모르겠습니다
package org.example; import java.util.Scanner; import static java.lang.Character.*; public class Main { public static int solution(String str, String ch){ int result = 0; for(int i = 0; i < str.length(); i++){ if(toLowerCase(str.charAt(i)) == toLowerCase(ch.charAt(0))){ result++; } } return result; } public static void main(String[] args) { Scanner scanner = new Scanner(System.in); String str = scanner.next(); String ch = scanner.next(); System.out.println(solution(str, ch)); } }IDE에서는 정상적으로 실행되는데채점사이트에서는 런타임에러가 나네요 ㅠㅠ이유를 모르겠습니다
-
미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
안녕하세요
for(int i = 0;i<s.length();i++){ if(s.charAt(i)>='a' && s.charAt(i)<='z'){ s.charAt(i) = s.charAt(i) - 32; System.out.print(s.charAt(i)); } else{ s.charAt(i) = s.charAt(i) +32; System.out.print(s.charAt(i)); } } 안녕하세요 위와 같이 풀었을때s.charAt(i) = s.charAt(i) - 32;이 코드에서 s.charAt(i) 인덱스에 직접 문자값을 저장할 수 없는 이유는 무엇인가요?? 리터럴이라서 그런건가요?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2468 질문있습니다!
http://boj.kr/edaf5f63d5104445b6740ef8ab48e5c6 강의를 듣기 전에 문제를 풀어서 제출을 했습니다.예제는 맞았는데 틀린 이유를 찾지 못했습니다. 한번 살펴봐주시면 감사하겠습니다!항상 감사합니다!
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
m1 세팅 확인 부탁드립니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.이렇게 진행했는데 오류가 계속 뜹니다.visual studio code는 세팅을 하고 설치하면 될까요?추가로 터미널에서 줄바꿈 기능은 따로 없는걸까요?
-
미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
11. 임시반장 정하기 런타임 오류 피드백 부탁드립니다
비슷한 질문을 확인했는데, 제 경우에는 인덱스 범위를 맞게 설정한거 같고 인풋 아웃풋 결과도 문제가 없는거 같은데 채점 사이트에서만 런타임 오류라고 뜨네요 ㅠㅠ 왜그런지 봐주세요. 1학년부터 5학년까지라고 하셨지만 저는 5*5배열을 만들어서 해결하고 싶었습니다.아래 코드에서 어떻게 고치면 될까요?? import java.util.*; public class Main { public int solution(int n,int[][] arr){ int answer=0, max=Integer.MIN_VALUE; for(int i=0;i<n;i++){ int cnt=0; for(int j=0;j<n;j++) { for(int k =0;k<5;k++) { if(arr[i][k] == arr[j][k]){ cnt++; break; } } } if(max<cnt){ max=cnt; answer= i+1; } } 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][n]; for(int i=0; i<n; i++) { for (int j = 0; j < 5; j++) { arr[i][j] = kb.nextInt(); } } System.out.print(T.solution(n,arr)); } }
-
미해결Python 알고리즘 베스트 10
강의에 없는 문제의 정답은 없을까요?
제가 맞게 풀었는지 의문이 들고, 다른 풀이법도 확인해보고 싶어 여쭤봅니다.
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
7-C 질문
안녕하세요 큰돌 선생님 좋은 강의 감사합니다 문제를 복습하다 질문이 생겼는데요, int &ret = d[y][x]; if (ret) return ret; check[y][x] = 1;이 부분에서 check[y][x] = 1; 이 코드가 위의 두 줄의 코드보다 먼저 나오면 왜 틀리는건가요?제가 처음 코드를 작성했을때 check[y][x] = 1; int &ret = d[y][x]; if (ret) return ret;이런식으로 작성했다가 바로틀렸다고 나와서, 고민하다가 선생님 코드와 비교해보니 이 부분에 차이가 있어서 고쳐서 맞았습니다. 해당 y, x 지점에 dp의 값이 있다하더라도 그 값을 사용하는것 맞지만 방문하는것도 맞으니 상관없다고 생각했는데 혹시 어떤 부분이 잘못된 생각인가요?
-
해결됨코딩테스트 [ ALL IN ONE ]
강의 자료에 대해서 질문 있습니다.
안녕하세요! 노션 공유를 받았는데 ([EBook] 개발자 취업 비밀노트) << 이 교재에 대해서 공유를 받았습니다. 혹시 이게 강의 교재인지 아니면 잘못 공유 받은 것 인지 궁금하여 여쭤봅니다!
-
해결됨코딩테스트 [ ALL IN ONE ]
스택으로 DFS 구현하는 방법
안녕하세요. 지금 그래프 이론 파트를 보고 있는데요! 혹시 DFS를 스택으로 구현하는 거랑 델타 탐색에 대한 부분도 강의에 있는지 궁금합니다이론 파트 먼저 보고 문제 푼 후에 풀이 영상 보려고 남겨뒀는데 혹시 문제 풀이 쪽에서 설명을 해주시면 미리 보고 정리해두고 싶어서요
-
해결됨코딩테스트 [ ALL IN ONE ]
트리 구현 방식에 대한 질문
안녕하세요.트리를 클래스로 구현하는 것과 배열로 구현하는 것에 차이가 있나요? 이제 막 코딩테스트를 처음 공부하고 있는데 구현 방법에 따라서 활용도가 어떻게 다른지 궁금합니다.제가 짧게 혼자 공부햇을 때에는 배열로 트리를 만들고 인덱스를 기준으로 부모와 자식을 찾아가는 방식으로 공부했는데요.강사님 강의를 들어보니 클래스로 구현하는게 훨씬 직관적으로 보여서요.이런 구현 방식들이 각각 어떻게 장단점이 있는지 궁금합니다.제가 정리하기로는 배열은 완전 이진 트리만 구현이 가능하고 부모와 자식을 찾아가기에 용이하다... 클래스 형식으로 트리를 구현하면 루트부터 시작할 때 용이하다...라고 정리를 햇는데 잘 이해하고 있는 건가요?배열로 트리를 구현하게 되면 bfs랑 dfs 탐색을 할 때에도 인덱스를 타고 타고 넘어가도록 코드를 작성하면 되나요?그리고 용어들이 조금 헷갈리는데 연결리스트로 트리를 구현하는 방식이 클래스로 구현하는 것과 같은 의미인가요..?
-
해결됨2주만에 통과하는 알고리즘 코딩테스트 (2024년)
이모스 관련 질문
안녕하세요. 선생님!백준 17611번 코드를 아래와 같이 작성했는데, 계속 고쳐봐도 "틀렸습니다"만 돌아와서 질문 남깁니다...코드가 너무 더러워서 최대한 주석을 달아봤는데.. 이해하시는 데 도움이 됐으면 하는 마음입니다 ㅠㅜfrom collections import defaultdict import sys input = sys.stdin.readline # input n = int(input()) arr = [] min_x, min_y = sys.maxsize, sys.maxsize dicH, dicV = defaultdict(list), defaultdict(list) for _ in range(n): x, y = map(int, input().split()) # 꼭지점 입력 dicH[x].append(y) # 수평으로 선분을 위치한다고 생각하고 그래프를 시계방향으로 90도 돌렸을 때 높이마다 존재하는 선분의 양 꼭지점을 모아둔 리스트 dicV[y].append(x) # 수직으로 선분을 위치한다고 했을 때, 높이마다 존재하는 선분의 양 꼭지점을 모아둔 리스트 min_x, min_y = min(min_x, x), min(min_y, y) # 높이마다 꼭지점을 정렬 for key in dicH: dicH[key] = sorted(dicH[key]) for key in dicV: dicV[key] = sorted(dicV[key]) # 누적합을 할 리스트 생성 prefixX, prefixY = [0 for _ in range(1_000_001)], [0 for _ in range(1_000_001)] # 이모스 적용 for key in dicH: length = len(dicH[key]) # 각 높이마다 꼭지점의 개수를 구하고 temp = 0 while temp < length - 1: # 꼭지점을 두 개씩 짝지어 1과 -1 추가 prefixY[dicH[key][temp] - min_y] += 1 # 누적합 리스트에 값을 올바른 위치에 추가하기 위해 min_y를 빼 시작점이 0이 되도록 함 prefixY[dicH[key][temp + 1] - min_y] -= 1 temp += 2 # 완료하면 두 칸 이동 for i in range(1, 1_000_001): prefixY[i] += prefixY[i - 1] for key in dicV: length = len(dicV[key]) temp = 0 while temp < length - 1: prefixX[dicV[key][temp] - min_x] += 1 prefixX[dicV[key][temp + 1] - min_x] -= 1 temp += 2 for i in range(1, 1_000_001): prefixX[i] += prefixX[i - 1] h = max(prefixY) v = max(prefixX) print(max(h, v))
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
맥북 m1 세팅 질문드립니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 오류가 뜨면 다음과 같이 진행하라고 하셨는데 정확하게 어디에 a.cpp를 삽입해야하는지 이해가 잘 되지 않습니다. 해당 경로로 이동 후 파일을 만들면 되는걸까요?(mkdir a.cpp)
-
미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
제가 공부한 내용을 블로그에 기록하고 싶습니다.
안녕하세요 선생님. 제가 요즘 공부하는 것을 블로그(velog)에 기록하고 있는데 블로그 공유 관련 글을 찾아보니까 문제를 통으로 올리는 건 불가능하지만 소스코드를 올리는 건 괜찮다고 답변해 주신것을 보았습니다. 저 또한 문제를 올리지는 않고 문제 대충 설명한 후에 소스코드의 대한 해석을 기록하고자 하는데 괜찮을까요?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
1-L 질문
저는 Combination을 썼을때 이중 반복문을 사용해야되니까 시간복잡도가 클거라 생각해서 two sum 을 재귀함수를 통해 구현해서 문제를 풀었습니다. 백준에 문제를 제출했을때 8ms 가 나오긴했는데 일반적으로 어떤 방법이 더 효율적인지 여쭤보고 싶습니다.
-
미해결[입문편] 안드로이드를 위한 코틀린(Kotlin) 문법
9:20초 쯤 나오는 init은 클래스안에서 공통으로 쓰이는 건가요?
안녕하세요 복치님!왕초보 강의듣고 기본기를 쌓고싶어서 입문강의도 듣고 있습니다initTest()안에 init은 클래스를 실행하면 무조건 실행되는 함수인건가요? 그리고 init이라는 함수가 실행 순서상 우선적으로 실행되는건지도 궁금합니다