묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨카카오 코테 6주 합격! 실전 파이썬 코딩테스트
2강 사전문제
안녕하세요.2강 사전문제 2강_0.배경지식 퀴즈.ipynb에서 배경지식 퀴즈 1의 힌트 두 번째 줄에 숫자가 잘못 표기된 것 같습니다.다음과 같이 기재되어 있는데, 첫번째 거듭제곱이 1*10^2가 맞는 게 아닌지요?
-
미해결김영한의 실전 자바 - 중급 2편
HashCode override
김영한 선생님의 자료의 경우에는 매개변수가 Object value 였는데 만약 제네릭을 K key 라고 할때에도return Math.abs(Objects.hashCode()) 라고 하는게 맞나요 ? 아니면 Math.abs(key.hashCode()) 가 맞나요?gpt 말로는 Objects 로 해야 NullPointerException 을 방지할 수 있다고 하는데 왜 그런건가요 ?
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
4-A 반례 질문있습니다.
안녕하세요 큰돌님.http://boj.kr/06f3ee21acda4846ae974c80be0893d8예제 출력은 맞는데 틀렸다고 나와서 반례를 찾아보려고 했지만 못찾겠습니다
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
쿼드트리 질문있습니다
http://boj.kr/4b7b07dcac794a348b06eba6291b9ac2제가 작성한 코드입니다. 디버깅 해가면서 반례 같은 것들 찾아서 입력해보는데어디가 틀린지 잘 모르겠습니다 ㅜㅠ
-
미해결김영한의 실전 자바 - 중급 2편
Shuttle에 많이 태우기 위해 코드를 수정한 후 생긴 사이드 이팩트
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]```package generic.test.ex3; import generic.test.ex3.unit.BioUnit; public class Shuttle<T extends BioUnit> { private BioUnit[] units; private int unitCount; public Shuttle() { units = new BioUnit[10]; } public void in(T unit) { units[unitCount++] = unit; } public T out() { return (T) units[0]; } public void showInfo() { for (int i = 0; i < unitCount; i++) { System.out.println("이름: " + units[i].getName() + " HP: " + units[i].getHp()); } } } package generic.test.ex3; import generic.test.ex3.unit.Marine; import generic.test.ex3.unit.Zealot; import generic.test.ex3.unit.Zergling; public class ShuttleTest { public static void main(String[] args) { Shuttle<Marine> shuttle1 = new Shuttle<>(); shuttle1.in(new Marine("마린", 40)); shuttle1.in(new Marine("마린2", 45)); shuttle1.showInfo(); Shuttle<Zergling> shuttle2 = new Shuttle<>(); shuttle2.in(new Zergling("저글링", 35)); shuttle2.in(new Zergling("저글링2", 35)); shuttle2.in(new Zergling("저글링3", 35)); shuttle2.in(new Zergling("저글링4", 35)); shuttle2.showInfo(); Shuttle<Zealot> shuttle3 = new Shuttle<>(); shuttle3.in(new Zealot("질럿", 100)); shuttle3.in(new Zealot("질럿2", 100)); shuttle3.in(new Zealot("질럿3", 100)); shuttle3.in(new Zealot("질럿4", 100)); shuttle3.showInfo(); UnitPrinter.printV1(shuttle1); UnitPrinter.printV2(shuttle1); } } Shuttle을 생성하고 내부에 많이 태우고 싶어서 코드를 조금 수정해 보았습니다 ! 그런데 코드를 이렇게 수정하니 문제풀이 시간 때 package generic.test.ex3; import generic.test.ex3.unit.BioUnit; public class UnitPrinter { public static <T extends BioUnit> void printV1(Shuttle<T> shuttle) { T out = shuttle.out(); System.out.println("이름: " + out.getName() + "HP: " + out.getHp()); } public static void printV2(Shuttle<? extends BioUnit> shuttle) { BioUnit out = shuttle.out(); System.out.println("이름: " + out.getName() + "HP: " + out.getHp()); } }이 코드를 출력하기 위해서 Shuttle 클래스에 out메서드에 unit 1명만 출력하기 위해 (T) units[0]을 반환하였는데요, 이렇게 한 덕분에 문제 요구사항 대로 잘 나왔지만,Shuttle 클래스의 out 메서드에 이러한 린트가 발생합니다. Unchecked cast: 'generic. test. ex3.unit. BioUnit' to 'T' 왜 이러한 문제가 발생하는지 파악을 하지 못했고,혹시 코드를 이렇게 작성하게 된다면 어떤 문제점이 발생하는지, 어떻게 리팩터링 하면 좋을지 조언을 구하고 싶습니다 !
-
미해결김영한의 실전 자바 - 중급 2편
와일드 카드는 이미 만들어진 제네릭 타입을 활용할 때 사용한다 ?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요 !강의를 통해 제네릭에 대해 알 수 있어서 감명깊었습니다.회사 코드를 보면서 막혔었는데 점차 이해가 되고 있어요 ! 감사 인사 먼저 전합니다 ㅎㅎGeneric2 정리 부분 11:06초에 질문 있습니다 !와일드카드는 제네릭 타입이나, 제네릭 메서드를 선언하는 것이 아니다.와일드 카드는 이미 만들어진 제네릭 타입을 활용할 때 사용한다. 이 부분이 이해가 잘 되지 않습니다 ...! public static void printV2(Shuttle<? extends BioUnit> shuttle) { BioUnit out = shuttle.out(); System.out.println("이름: " + out.getName() + "HP: " + out.getHp()); }package generic.test.ex3; import generic.test.ex3.unit.BioUnit; public class UnitPrinter { public static <T extends BioUnit> void printV1(Shuttle<T> shuttle) { T out = shuttle.out(); System.out.println("이름: " + out.getName() + "HP: " + out.getHp()); } public static void printV2(Shuttle<? extends BioUnit> shuttle) { BioUnit out = shuttle.out(); System.out.println("이름: " + out.getName() + "HP: " + out.getHp()); } } 강의에서 사용한 와일드카드 메서드 예시입니다 ! printV2가 와일드카드 메서드 인데요, 이 메서드를 구현한 UnitPrinter 클래스는 제네릭 타입을 선언(?)하지 않았는데도 불구하고 사용하고 있는데, 어떤 인스턴스를 기준으로 제네릭이 "이미 만들어진 제네릭 타입"으로 간주하면 될까요?제가 아직 깊이가 부족하여 이해를 잘 못한 것일 수 있지만, 만약 Shuttle 클래스에서 제네릭 타입을 선언하지 않고, <?>만을 사용하여 메서드를 만든다면 잘못된 사용법인지궁금합니다 !와일드카드는 제네릭 타입이나, 제네릭 메서드를 선언하는 것이 아니라 이미 만들어진 제네릭 타입을 활용할 때 사용한다의 예시가 더 있다면 조언 부탁드리겠습니다 ! 감사합니다 ☺
-
해결됨카카오 코테 6주 합격! 실전 파이썬 코딩테스트
1강 연습문제&목표문제 - 복습 문제2
첫 번째 예시에서 출력이 [4, 16] 이 맞지 않을까요?그리고 문제에 대한 모범 답안은 따로 제공해주시는 건 없을까요?
-
미해결Python 알고리즘 베스트 10
문제풀이 서비스 버그 문의드립니다
화면 왼쪽의 [Q1. 자격증명], [Q2. 암호문] 등의 버튼을 클릭해도 해당 문제가 있는 html페이지로 넘어가지 않습니다chrome 외에 safari로 해도 마찬가지이고요url 파라미터로 page=2 넣어서 직접 접속하니 넘어가기는 해서 불편한 대로 쓰고는 있는데요https://pyalgo.co.kr/?page=2처음 오는 분들은 이런 부분을 전혀 모르실 거고 애초 명백히 잘못된 버그이니 빨리 고쳐주시기 바랍니다<li><a href="#" id="q1" class="btn-que success">Q1. 자격 증명</a></li>보니까 href속성에 값이 제대로 있지 않습니다 임의로 값을 바꾸고 클릭하니 잘 넘어가지네요
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
17822 질문있습니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.설명하신 것과 비슷하게 코드를 작성을 했고 테스트 케이스도 통과를 해서 제출을 했더니 그냥 광탈을 하네요...일단 강의 보고 제출을 했지만 왜 이 코드가 틀렸는지 모르겠어서 질문드립니다..실수를 한건지 그냥 논리 자체가 틀린건지 모르겠네요.. 무식한 질문인 거 알지만 너무 모르겠어서 질문드립니다ㅜㅜ#include <bits/stdc++.h> using namespace std; int N, M, T, ret, x, d, k; int ty, tx; int dy[] = { -1, 0, 1, 0 }; int dx[] = { 0, 1, 0, -1 }; int a[54][54], visited[54][54]; void rotate(int* arr, int n) { int temp[54] = { 0 }; for (int i = 0; i < M; i++) { temp[(i + n) % M] = arr[i]; } memcpy(arr, temp, sizeof(temp)); return; } void rotate_r(int* arr, int n) { int temp[54] = { 0 }; for (int i = 0; i < M; i++) { temp[(i - n + M) % M] = arr[i]; } memcpy(arr, temp, sizeof(temp)); return; } bool bfs(int sy, int sx, int num) { visited[sy][sx] = 1; queue<pair<int, int>> q; q.push({ sy, sx }); bool flag = 0; while (q.size()) { tie(ty, tx) = q.front(); q.pop(); for (int i = 0; i < 4; i++) { int ny = ty + dy[i]; int nx = tx + dx[i]; if (ny < 0 || ny >= N ||visited[ny][nx]) continue; if (nx < 0 || nx >= M) { //인덱스를 이동해야함.. 원형이기 때문에 나가지 않음 // 0 -> 4, 4 -> 0으로 바뀜 if (nx < 0) { nx = M-1; } else if (nx >= M) { nx = 0; } } if (a[ny][nx] != num) continue; visited[ny][nx] = 1; q.push({ ny, nx }); a[ty][tx] = 0; a[ny][nx] = 0; flag = 1; } } return flag; } int main() { cin >> N >> M >> T; for (int i = 0; i < N; i++) { for (int j = 0; j < M; j++) { cin >> a[i][j]; } } while (T--) { cin >> x >> d >> k; if (d == 0) { rotate(a[x - 1], k); while (2 * x <= N) { int temp = x * 2; rotate(a[temp - 1], k); x++; } } else { rotate_r(a[x - 1], k); while (2 * x <= N) { int temp = x * 2; rotate_r(a[temp - 1], k); x++; } } memset(visited, 0, sizeof(visited)); int sum = 0; int cnt = 0; bool flag = 0; bool check = 0; for (int i = 0; i < N; i++) { for (int j = 0; j < M; j++) { sum += a[i][j]; if (a[i][j] != 0) { cnt++; } if (!visited[i][j] && a[i][j] != 0) { flag = bfs(i, j, a[i][j]); //한번이라도 지운다면 } if (flag) { check = 1; } } } if (!check) { for (int i = 0; i < N; i++) { for (int j = 0; j < M; j++) { double aver = (double)sum / (double)cnt; if (a[i][j] != 0 && (double)a[i][j] > aver) { a[i][j] = a[i][j] - 1; } else if (a[i][j] != 0 && (double)a[i][j] < aver) { a[i][j] = a[i][j] + 1; } } } } //a[0][0]; } //a[0][0]; for (int i = 0; i < N; i++) { for (int j = 0; j < M; j++) { ret += a[i][j]; } } cout << ret; }
-
미해결김영한의 실전 자바 - 중급 2편
stack구조관련질문
package collection.deque.test.stack; import java.util.ArrayDeque; import java.util.Deque; public class BrowserHistory { private Deque<String> history = new ArrayDeque<>(); private String currentPage = null; public void visitPage(String s) { if(currentPage != null){ history.push(currentPage); } currentPage = s; System.out.println("방문 : "+s); } @Override public String toString() { return "BrowserHistory{" + "stack=" + history + '}'; } public String goBack() { if(!history.isEmpty()){ currentPage = history.pop(); System.out.println("뒤로가기 : "+currentPage); return currentPage; } return null; } public void pop(){ System.out.println(history.pop()); } } 문제와풀이3 -stack시간 수업에관한 질문입니다 stack구조의 경우 마지막에 넣은 입력이 pop()을 하면 나오는데 이경우는 마지막 전에 입력한것이 나옵니다 이유가뭘까요??
-
미해결김영한의 실전 자바 - 중급 2편
컬렉션프레임워크 Stack 관련질문
package collection.deque.test.stack; import java.util.ArrayDeque; import java.util.Deque; public class BrowserHistory { private Deque<String> history = new ArrayDeque<>(); private String currentPage = null; public void visitPage(String s) { if(currentPage != null){ history.push(currentPage); } currentPage = s; System.out.println("방문 : "+s); } @Override public String toString() { return "BrowserHistory{" + "stack=" + history + '}'; } public String goBack() { if(!history.isEmpty()){ currentPage = history.pop(); System.out.println("뒤로가기 : "+currentPage); return currentPage; } return null; } } ////////////////////// package collection.deque.test.stack; public class BrowserHistoryTest { public static void main(String[] args) { BrowserHistory browser = new BrowserHistory(); // 사용자가 웹페이지를 방문하는 시나리오 browser.visitPage("youtube.com"); browser.visitPage("google.com"); browser.visitPage("facebook.com"); // 뒤로 가기 기능을 사용하는 시나리오 String currentPage1 = browser.goBack(); System.out.println("currentPage1 = " + currentPage1); String currentPage2 = browser.goBack(); System.out.println("currentPage2 = " + currentPage2); System.out.println(browser); } } 위의 goBack 메서드 실행코드가 Pop()인데 currentPage1 에서 facebook이 출력이되지않고 google이 출력되는 이유가 궁금합니다 스택구조는 마지막에 입력한것이 나오게 되어있는데 그 전에 입력한것이 왜 나오는 이유가 궁금합니다
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
9375번 질문입니다
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요! t가 2번째에서 t가 1번째 옷의 종류와 겹칠 수 있을 경우의 수가 있을 거 같아요 _map.clear()는 안해도 되는건가요?
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
공부방법에 대한 질문입니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 교안을 공부하다가 진도가 잘 안나가서 일단 잘모르는 건 넘어가고 문법의 경우에는 다시 찾아볼생각으로 교안은 가볍게 한번씩 쳐보기도 하고 개념강의 보면서 문제 풀려고 하는데 맞게 하고 있는 걸까요? 그리고 수학적 사고력이 부족한 거 같으면 이산수학 같은 전공수학공부도 따로 해야 할까요?
-
미해결김영한의 실전 자바 - 중급 2편
변수 작명하신 부분에 궁금증이 있습니다!
<섹션 2 - 제네릭이 필요한 이유>부분인데요. IntegerBox 클래스는 set 메서드에 변수가 value로 작명 되어있습니다. 그러나,StringBox 클래스는 set 메서드에 변수가 object로 작명 되어 있습니다.StringBox에 set 함수 매개변수에, String str이 아니라, String object라고 하신 이유가 혹시 있는걸까요? String str이라고 해도 물론 되겠지만, 혹시 "String object"로 매개변수를 받도록 하신 특별한 의도가 있는건가 싶어서요.
-
미해결김영한의 실전 자바 - 중급 2편
arrayList 다운 캐스팅 오버헤드에 대한 질문이 있습니다.
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]안녕하세요 영한님 강의 잘 수강하고 있습니다 😀 수강중 한가지 궁금한 점이 생겨 질문드립니다.arrayList에서 제너릭을 사용시 타입 이레이지에 의해 컴파일시 Obejct로 타입이 변경된다고 알고 있습니다. 당연히 그과정에서 값을 꺼내면 (예를들어 String을 꺼낸다고 가정) Object -> String으로 다운 캐스팅이 되어야 한다고 이해하고 있습니다.이렇게 되면 개발자의 의도와 다른 다운 캐스팅이 발생하게 되고 이런 캐스팅은 리스트와 같은 복수개의 데이터를 다루는 컬렉션에서 오버헤드를 크게 발생시킬수도 있겠다는 생각을 하게 되었습니다. 혹시 이러한 질문에 대한 내용이 맞는지와 맞다면 어떤방식으로 개선할 수 있을지 의견을 구할 수 있을까요??
-
미해결카카오 코테 6주 합격! 실전 파이썬 코딩테스트
bisect 활용법에서 궁금한 점이 있습니다.
저희 강의 내용 중에서 내장모듈 bisect에 대한 설명 글에서 궁금한 점이 있어서 질문 드립니다. 내림차순이라면, reverse=True 를 사용할 수 있다고 하셨는데 bisect 모듈 안에는 reverse 라는 인자가 없다고 나옵니다. 어떻게 사용해야할까요?
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
코테 합격권
안녕하세요 큰돌님..!이번 넷마블 코테 공채를 보고 왔는데 5문제 중 3문제를 맞췄습니다.3문제는 3시간중 1시간안에 풀었고 뒤에 2문제를 2시간 고민하다 못 풀었습니다.난이도는 3문제는 쉬운편이었다고 생각하는데, 이정도면 서류는 봐줄까요..?물론 시험마다 달라서 발표 전까지 확실한 것은 없겠지만 코테 강사이신 큰돌님의 감?으로 대충 말씀주셔도 괜찮습니다!!
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3-J 질문있습니다.
이제 슬슬 혼자풀어가는 문제들이 나오기 시작하네요!http://boj.kr/c30eb4ca4fff412aa41d4f5189e84146이렇게 작성했는데 큰돌님이랑 많이 달라서 비효율적인가 고민이 됩니다.
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
8-F
for(int i = 1; i <= 3; i++){ ret = min(ret, 1 + f(pos, mod(x + i * flag), y, z, flag)); ret = min(ret, 1 + f(pos, mod(x + i flag), mod(y + i flag), z, flag)); ret = min(ret, 1 + f(pos, mod(x + i flag), mod(y + i flag), mod(z + i * flag), flag)); }f 함수의 저 부분에서 탐색 할때 1~3번 돌리는 경우, 현재 위치부터 현재 위치+3까지 변하는 경우를 다 체크하는데 왜 방향은 그대로 두는건가요? 방향도 계속 시계방향과 반시계방향을 번갈아 줘야한다고 생각하는데 그렇지 않아도 답이 나오는 이유가 너무 궁금합니다.for (int j=0; j<2; j++) 해서 flag도 변경해줘야하지 않나요?
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
6-M 질문있습니다 :)
안녕하세요 선생님 🙂 문제에서 이해가 되지 않는 부분이 있어서 질문 드립니다. 2중 for문에서 i = 0, j = 0, j < i 라는 조건이 있다면 i = 1로 해도 되지 않을까 싶어서 1로 했더니 cnt배열의 값들이 전부 틀어져버리더라구요. 아래의 코드를for (int i = 0; i < N; i++) { mx = 0; for (int j = 0; j < i; j++) { 아래와 같이 변경해봤습니다.for (int i = 1; i < N; i++) { mx = 0; for (int j = 0; j < i; j++) { 결과값이 다른 이유가 무엇때문인지 잘 모르겠습니다. 조언 부탁드립니다 🙂