묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결김영한의 실전 자바 - 중급 2편
shuttle.showinfo를 호출시 실행창 질문
package generic.test.ex3 object UnitPrinter { //제네릭 메서드 fun <T : BioUnit>printerV1(t: Shuttle<T>){ println(t.showInfo()) } fun printerV2(shuttle: Shuttle<out BioUnit>){ println(shuttle.showInfo()) } fun <T : BioUnit>printerV3(t: Shuttle<T>){ val unit = t.out() println("이름: ${unit.name} hp:${unit.hp}") } fun printerV4(shuttle: Shuttle<out BioUnit>){ val unit = shuttle.out() println("이름: ${unit.name} hp:${unit.hp}") } }자바와 코틀린은 100퍼센트 호환이 된다고 해서 코틀린으로 강의를 보고있습니다.강의에선 v1과 v2로 인자로 받은 셔틀에서 unit을 꺼내어 내용을 출력했는데요. 그렇게 안하고 셔틀에서 바로showinfo를 호출해서 실행창에name : 마린 hp : 40kotlin.Unitname : 마린 hp : 40kotlin.Unit이렇게 줄바꿈으로 kotlin.Unit이라는게 자동적으로 붙는데 왜이런건가요 . 강의에서처럼 unit을꺼내어서 출력하면 안붙습니다.
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
9996번 런타임에러
#include <bits/stdc++.h> using namespace std; vector<string> split(string input,string delimiter){ vector<string> ret; int delimiterPosition; while((delimiterPosition=input.find(delimiter))!=string::npos){ ret.push_back(input.substr(0,delimiterPosition)); input.erase(0,delimiterPosition+delimiter.length()); } ret.push_back(input); return ret; } int main(){ int N; cin>>N; fflush(stdin); string pattern; getline(cin,pattern); vector<string> splited_strings=split(pattern,"*"); string first=splited_strings[0],last=splited_strings[1]; string input[N]; for(int i=0;i<N;i++) cin>>input[i]; for(int i=0;i<N;i++){ // 접두사 if(first!=input[i].substr(0,first.size())) { // 없으면 cout<<"NE\n"; continue; } else input[i].erase(0,first.size()); // 있으면 // 접미사 if(input[i].find(last)==string::npos) { // 없으면 cout<<"NE\n"; continue; } else{ // 있으면 if(last==input[i].substr(input[i].size()-last.size())) cout<<"DA\n"; else cout<<"NE\n"; } } return 0; }어디서 런타임에러를 유발하는 지 모르겠습니다.
-
해결됨[자바/Java] 문과생도 이해하는 DFS 알고리즘! - 입문편
graph를 2차원 배열 또는 List로 하는 기준을 어떤식으로 잡으면 좋을까요...?
아직 2차원 배열 또는 List로 해야되는것을 선택하는 기준이 잘 안잡히는데 문제에서 원하는 출력 형태가 연결된 모든 것들을 출력하는 느낌으로 질문한다면 List 이고, 그외에는 2차원 배열로 하면 될까요...? ㅠㅠ
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
1-H 질문있습니다
http://boj.kr/a2bc8496dc1046a495a22dd0185ad515여기 제 코드입니다.a만큼의 크기를 가진 배열 arr을 사용해서가장 최근의 a일의 온도를 저장합니다.최근 a일간의 온도의 최대값은 결국 새로 들어온 값이 가장 오래된 날짜보다 높다면 최대값이 변경되는것이니해당 부분을 if문으로 처리해서 sum값을 변경시켰는데오답이 나옵니다.구간마다 sum을 계산하여 max값을 비교한다면 맞다고 하는데제 방식이 왜 틀렸는지 이해가 가질 않습니다.
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
주난의 난 질문
저는 bfs와 dfs를 혼용하는 방식으로 코드를 짯는데 이렇게 짜면 단점이 어떤게 있을지 궁금합니다.큰돌님 항상 강의 잘 듣고 있습니다 감사합니다.#include <iostream> #include <vector> #include <algorithm> #include <queue> #include <stack> using namespace std; int dx[4] = {0, 0, 1, -1}; int dy[4] = { 1, -1, 0, 0 }; int N, M, startX, startY, endX, endY; char board[300][300] = { 0 }; int visit[300][300] = { 0 }; queue<pair<int, int>> q; void print() { for (int i = 0; i < N; i++) { for (int j = 0; j < M; j++) { cout << board[i][j] << " "; } cout << "\n"; } cout << "\n"; } void print2() { for (int i = 0; i < N; i++) { for (int j = 0; j < M; j++) { cout << visit[i][j] << " "; } cout << "\n"; } cout << "\n"; } void dfs(int x, int y, int a) { //print2(); visit[y][x] = a; for (int i = 0; i < 4; i++) { int nx = x + dx[i]; int ny = y + dy[i]; if (nx <0 || nx > M || ny <0 || ny > N) continue; if (!visit[ny][nx] && board[ny][nx] == '0') { dfs(nx, ny, a); } else if (!visit[ny][nx] && (board[ny][nx] == '1'|| board[ny][nx] == '#')) { board[ny][nx] = '0'; visit[ny][nx] = a; q.push({ nx, ny }); } } } void bfs() { q.push({ startX-1, startY-1 }); visit[startY-1][startX-1] = 1; while (!q.empty()) { //print2(); int x = q.front().first; int y = q.front().second; q.pop(); for (int i = 0; i < 4; i++) { int nx = x + dx[i]; int ny = y + dy[i]; if (nx <0 || nx > M || ny <0 || ny > N) continue; if (!visit[ny][nx] && board[ny][nx] == '1') { q.push({ nx, ny }); visit[ny][nx] = visit[y][x] + 1; board[ny][nx] = '0'; } else if (!visit[ny][nx] && board[ny][nx] == '0') { dfs(nx, ny, visit[y][x] + 1); if (visit[endY-1][endX-1]) return; } else if (!visit[ny][nx] && board[ny][nx] == '#') { visit[ny][nx] = visit[y][x] + 1; return; } } } } int main() { char symbol; cin >> N >> M; cin >> startY >> startX >> endY >> endX; for (int i = 0; i < N; i++) { for (int j = 0; j < M; j++) { cin >> symbol; board[i][j] = symbol; } } bfs(); cout << visit[endY - 1][endX - 1]-1; }
-
미해결김영한의 실전 자바 - 중급 2편
해시 알고리즘6 - 해시 충돌 구현 메모리 구조 관련 질문드립니다!
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]안녕하세요 영한님 항상 정성이 담긴 강의해주셔서 대단히 감사합니다:)다름이 아니라 해당 부분 강의를 들었을 때 LinkedList와 배열의 조합으로 메모리 구조가 잘 떠오르지 않아서 제가 생각한 부분이 맞는지 질문드리는 점 양해 부탁드립니다(_ _)LinkedList 인덱스 배열[9] 부분에 9와 99가 같이 들어가는데요, 영한님께서 설명해주셨던 LinkedList 강의 부분 메모리 구조 그림으로 예를 든다면 배열[9] 부분에 노드가 이런식으로 두 개가 생성되는 것이 제가 이해한 부분이 맞을지 질문드립니다!항상 감사합니다 :))
-
해결됨비전공자의 전공자 따라잡기 - 자료구조(with JavaScript)
우선순위 큐 질문이 있습니다!
우선순위 큐 강의를 재미있게 보았는데, 큐와 우선순위큐가 먼저 실행 되는것을 실행하는 차이말고는 똑같은것 같은데 구현 코드는 힙 자료구조를 사용 하시더라고요! 그렇다면 힙과 우선순위 큐가 비슷하고 우선 순위 큐가 큐랑 비슷하니까 힙과 큐도 비슷한건가요?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
7-W [2342] 문제 질문입니다.
안녕하세요 큰돌님. 항상 좋은 강의 감사드립니다.7-W에 제가 생각했을때 같은 논리인것 같은데 1%에서 오답으로 떠 질문 드립니다 ㅜㅜ 아래는 제 코드입니다.#include<bits/stdc++.h> using namespace std; int a[100001]; int n; int dp[100001][5][5]; int go(int idx,int left, int right){ if(idx == n) return 0; int &ret = dp[idx][left][right]; if(ret!=-1) return ret; ret = 987654321; int num = a[idx]; //Left if(left == 0) ret = min(ret,go(idx+1,num,right)+2); if(num == left) ret = min(ret,go(idx+1,left,right)+1); if(abs(left-num)==2) ret = min(ret, go(idx+1,num,right)+4); if((num+1)%4 == left || (num!=1 && num-1 ==left) || (num==1 && left ==4))ret = min(ret,go(idx+1,num,right)+3); //Right if(right == 0) ret = min(ret,go(idx+1,left,num)+2); if(num == right) ret = min(ret,go(idx+1,left,right)+1); if(abs(right-num)==2) ret = min(ret,go(idx+1,left,num)+4); if((num+1)%4 == right || (num!=1 && num-1 ==right) || (num==1 && right ==4)) ret = min(ret,go(idx+1,left,num)+3); return ret; } int main(){ while(true){ int num = 0; cin>>num; if(num==0) break; a[n]=num; ++n; } memset(dp,-1,sizeof(dp)); cout<<go(0,0,0)<<"\n"; } 현재 코드에서//Left if(left == 0) ret = min(ret,go(idx+1,num,right)+2); if(num == left) ret = min(ret,go(idx+1,left,right)+1); if(abs(left-num)==2) ret = min(ret, go(idx+1,num,right)+4); if((num+1)%4 == left || (num!=1 && num-1 ==left) || (num==1 && left ==4))ret = min(ret,go(idx+1,num,right)+3); //Right if(right == 0) ret = min(ret,go(idx+1,left,num)+2); if(num == right) ret = min(ret,go(idx+1,left,right)+1); if(abs(right-num)==2) ret = min(ret,go(idx+1,left,num)+4); if((num+1)%4 == right || (num!=1 && num-1 ==right) || (num==1 && right ==4)) ret = min(ret,go(idx+1,left,num)+3);부분만 강의코드와 비슷하게 아래와 같이 바꾸면ret = min(ret, go(idx+1,a[idx],right)+check(left,a[idx])); ret = min(ret, go(idx+1,left,a[idx])+check(right,a[idx]));통과가 됩니다... 다른 많은 예제들도 넣어봤는데 잘 돌아가는데 어디서 잘못 짚은걸까요?? ㅠㅠ
-
미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
섹션 8.15 피자배달거리 시간초과
안녕하세요, 피자 배달거리 질문드립니다.처음에는 제가 강의에서 풀어주신 코드와 유사한 방식으로 작성했었는데 정답은 맞게 나오지만 제출해보면 자꾸 시간 초과가 떠서..강의를 보면서 완전히 같은 코드로 고쳐봤는데도 시간 초과가 뜨네요ㅠㅠ혹시 이 코드에 문제점이 뭔지 답변 주시면 감사하겠습니다!import java.util.ArrayList; import java.util.List; import java.util.Scanner; class Points { int x,y; Points(int x, int y) { this.x= x; this.y = y; } } public class Main { static int n, m, len = 0; static int answer = Integer.MAX_VALUE; static int[] ch; static List<Points> pizzaDis, homes; // 피자 배달거리 public static void main(String[] args) { Scanner in = new Scanner(System.in); n = in.nextInt(); m = in.nextInt(); pizzaDis = new ArrayList<>(); homes = new ArrayList<>(); for (int i = 0; i < n; i++) { for (int j = 0; j < n; j++) { int num = in.nextInt(); if (num == 2) { pizzaDis.add(new Points(j, i)); } else if (num == 1) { homes.add(new Points(j,i)); } } } len = pizzaDis.size(); ch = new int[m]; dfs(0,0); System.out.println(answer); } static void dfs(int level, int start) { if (level == m) { int sum = 0; for (Points h : homes) { int min = Integer.MAX_VALUE; for (int p : ch) { min = Math.min(min, Math.abs(h.x - pizzaDis.get(p).x) + Math.abs(h.y - pizzaDis.get(p).y)); } sum += min; } answer = Math.min(sum, answer); } else { for (int i = start; i < len; i++) { ch[level] = i; dfs(level + 1 ,start + 1); } } } }
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
c++ 교안
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.c++ 교안 보면서 익히고있는데요 C++ 학습중인데 어디까지 직접 보면서 공부해야하죠?강의는 언제부터 보면되나요??
-
미해결입문자를 위한 코딩테스트 핵심(이론과 문제풀이) [Python]
고정된 숫자 문제 질문
제한 사항에 nums[i] >=1 인데 제시해주신 예시에서는 nums의 원소로 -를 가진 숫자가 있는데, 예시의 오류인가요?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
백준 문제 미리 모아둔거 없나요???
강의를 틀기전에 먼저 풀어보려하는데 혹시 강의에 사용되는 문제목록 모아져있는건 없을까요
-
미해결김영한의 실전 자바 - 중급 2편
Queue질문
안녕하세요.Queue 질문이 있어서 글 씁니다.add()와 offer()remove()와 poll() 은 각각 동작도 같고 반환 타입도 같던데 검색해보면 예외를 발생시키느냐 마냐의 차이라고 나와서요. 실제로 offer() 까보면 return add()라고 되어 있기도 하고 ...무슨 차이인지 그리고 어떨 때 어떤 걸 쓰는 게 좋을지 보충 설명 부탁드립니다.
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-G 코드 질문드립니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.예시입출력 다 맞고,로직상 무조건 맞다고 생각하는데3%에서 틀리다고 나옵니다.도대체 뭐가 잘못된건지 모르겠습니다.. 도와주십쇼http://boj.kr/82e12b941d914352baab934b52c8a04b
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-B 유기농 배추 질문
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.bfs를 활용해서 문제를 풀었습니다.근데 계속 메모리초과가 나는데그 이유를 알려주시면 감사하겠습니다..http://boj.kr/b024bff359c64a679143f2c6633ea8c3
-
해결됨코딩테스트 [ ALL IN ONE ]
min cost climbing stairs 완전탐색/dp 후반부에서 질문있습니다~
19:00쯤에서 보면 memo 정의 하실때 memo = [-1]*n으로 초기화하시고 시작하시는데n+1을 곱해줘야하지 top을 포함한 개숫가 초기화 되는게 아닌가 싶어서 질문드립니다혹시 제가 놓친게 있다면 말씀부탁드려요 ㅠㅠ
-
미해결입문자를 위한 코딩테스트 핵심(이론과 문제풀이) [Python]
답은 맞는거같은데 틀렸어요
이 문제 아래처럼은 안되나요? 답은 맞는데 백준에서 틀리네요from collections import defaultdict n_list=defaultdict(int) a,b=map(int,input().split()) answer=0 list_f=[] for i in range(0,a): name=input() n_list[name]+=1 for i in range(0,b): name=input() if name in n_list: answer+=1 list_f.append(name) print(answer) sorted(list_f) for i in list_f: print(i)
-
미해결김영한의 실전 자바 - 중급 2편
UML 클래스다이어그램 화살표 의미
컬렉션 프레임워크 - Set 강의 중 UML 클래스 다이어그램에 관해 궁금증이 생겼습니다. HashSet, TreeSet, LinkedHashSet 즉 Set의 주요 구현체들을 설명하셨을때,여기서 점선으로 된것과 실선으로 된것의 차이점은 무엇일까요??인터페이스인 Set의구현체로 HashSet , TreeSet 등이 있다는 것은 이해가 가지만, LinkedHashSet은 왜 실선으로 표시하는 걸까요?? 이 두개의 차이점에 대해 정확히 알고싶습니다!
-
미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
이 풀이방법 혹시 틀렸을까요?
public class Number4 { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int count = scanner.nextInt(); List<String> array = new ArrayList<>(); for (int i = 0; i <= count; i++) { array.add(scanner.nextLine()); } for (String str : array) { Deque<Character> stack = new ArrayDeque<>(); for ( char c : str.toCharArray()){ stack.push(c); } while (!stack.isEmpty()){ System.out.print(stack.pop()); } System.out.println(); } } } 위 풀이방법처럼 풀었는데 이게 컴파일 에러가 나는데 혹시 이 풀이방법이 문제점을 가지고 있을까요?
-
미해결김영한의 실전 자바 - 중급 2편
HashMap 질문
안녕하세요.Set<Map.Entry<String, Integer>> 이게 좀 궁금해서 살펴보니 Set<E> 제네릭으로 받게끔 되어 있고 그럼 여기서 Map.Entry<String, Integer> 이게 하나의 타입처럼 사용이 된다는 건데 Map 클래스에서 Entry는 interface로 되어 있어서요.Map.Entry라고 썼다는거는 Entry도 인터페이스(클래스)니까 중첩 static class 처럼 쓰였다는건데 static도 안 붙어 있고 관련된 구현체도 Map 클래스 내부에는 없는 거 같아서요.추가 설명 부탁드립니다.