묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨김영한의 실전 자바 - 중급 2편
타입 이레이저 질문
제가 실습했던 컴파일된 AnimalHospitalV3.class 파일을 인텔리제이에서 복호화해서 보면타입 매개변수인 T와 같은 표현이 살아있는데 왜 그런 것일까요? 컴파일 후라면 클래스명이 AnimalHospitalV3<T extends Animal>이 아니라AnimalHospitalV3 로 바뀌어 있어야할 것 같아서요. 글구 T들은 Object로 변해있어야 할 것 같은데...궁금합니다
-
해결됨김영한의 실전 자바 - 중급 2편
Generate로 hash 생성시, hash()와 hashCode()
Generate를 이용해서Hash 생성시@Override public int hashCode() { return Objects.hashCode(id); }와 같이 영상과는 달리 hash()가 아닌 hashCode()가 생성되어 결과물이 미묘하다 다릅니다.검색해보니, hash가 hashCode 배열 처리된 걸로 알고 있어서 차이가 있다는 건 알겠는데@Override public int hashCode() { return Objects.hash(id); }일부러 Code를 삭제해서 영상처럼 위와 같이 실무에서도 hash를 기반으로 사용할지, 아니면 IDE에서 기본으로 제공하는 대로 hashCode를 사용해도 딱히 상관이 없나요?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2- I segmentation fault
안녕하세요 선생님 해당 코드는 정답코드입니다. 그러나 제가 주석처리한부분으로 코드를 짰을때는 segmentation error가 나와서 그 이유를 여쭤보고 싶습니다.또한 선생님께서는 size()를 사용하셨고 저는 length()를 사용했는데 size()와 length()의 장단점도 알고싶습니다 http://boj.kr/df71a1d8b94a49cca8ed3d2cbb104d78감사합니다
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
안녕하세요! 버퍼 플러싱 관련하여 질문드립니다.
교안 32p에 cin을 사용해서 반복횟수를 입력 받고 getline을 사용시에 정수 입력 => 엔터 => 문자열 입력의 흐름이 되고 cin은 개행문자 전까지 입력을 받기 때문에 버퍼에 \n이 남아서 버퍼 플러싱이란걸 해야 함으로 이해했습니다. 그리고 버퍼플러싱이 임시저장소인 버퍼의 데이터를 프로그램에서 사용하기 위해 영구저장소로 가져가는 것임도 확인했습니다. 이 과정에서 2가지 여쭙고싶습니다. 위의 문제로 입력 버퍼에 개행 문자가 남아있다면 이후에 데이터를 입력할 때 남아있는 개행문자에 걸려서 오류가 날 것으로 생각합니다. 그래서 따로 남아있는 개행문자를 처리해야되는 것으로 이해했습니다. 제가 이해한게 맞는지 궁금합니다!32p의 버퍼 플러싱 코드에서string bufferflush; getline(cin, bufferflush);의 코드로 남아있는 개행문자를 버퍼 플러싱 해주는것으로 사료되는데, 위 코드가 어떤 원리로 남아있는 개행문자를 처리해주는지 이해가 가지않습니다.. ㅠ
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-D (백준2573 영역구하기) 백터사용시 메모리 초과
안녕하세요!(질문글 올리다가 제코드를 다시보니 왜 메모리초과가 나는지.. 알게돼서 글쓴게 아까워서 정보공유차 남깁니다)요즘 코딩테스트에 vector를 넘겨받는 케이스가 많아서연습삼아 함수인자로 vector를 넘겨주는 방식으로 문제를 풀고있습니다. 전역배열로 문제를 풀면, 메모리초과가 안나는데, vector를 넘기니 메모리초과가 발생하네요. ----------- 함수 선언은 아래와 같이 했습니다.-----void dfs(vector<vector<int>> map, vector<vector<int>>& visited, int x, int y, int num)----------------------------원인 ) 재귀호출하면서 매번 map이 복사가 되면서 메모리를 잡아먹는게 원인 이였습니다. & 참조 연산 붙여주니 바로 통과되네요. 다른 분들은 이런 실수 안하시길.. 수정) void dfs(const vector<vector<int>>& map, vector<vector<int>>& visited, int x, int y, int num)교안대로 전역변수쓰는게 확실히 실수를 줄여줘서 좋긴하지만 이것도 좋은 경험이라고 생각하고 넘어가게습니다.
-
미해결김영한의 실전 자바 - 중급 2편
섹션 7. onlyHash
hashCode만 오버라이딩으로 재정의하면 해시코드는 같아지지만, 결국 equals비교 Object의 것을 사용해서 실패하게 된다고 하셨습니다.그런데 MemberOnlyHash 클래스에서 equals를 재정의를 했다고 가정했을 때, 어떻게 MemberOnlyHash로 갈 수 있는 건가요?오버라이딩 되어서 우선권을 갖고있는 건 알고있습니다.이해가 안 가는 부분을 어떻게 말을 해야 할 지 조금 복잡하지만... 1번 코드MyHashSetV2 set = new MyHashSetV2(10); NoEqualsOnlyHash m1 = new NoEqualsOnlyHash("A"); set.add(m1);1번 코드에서 set에서 add를 호출합니다. 2 코드public boolean add(Object value) { LinkedList<Object> bucket = buckets[hashIndex(value)]; if (bucket.contains(value)) { return false; }그리고 2번 코드에 들어가게 되고 3번 코드 public boolean add(MemberOnlyHash m1) { LinkedList<Object> bucket = buckets[0]; if (bucket.contains(m1)) { return false; }그러면 2번 코드가 실행되면 3번 코드처럼 되는 거라고 이해하고 있습니다. (hashIndex는 편의상 0이라고 하겠습니다.) 0번 인덱스에 있는 LinkedList <Object> 타입의 연결리스트가 나옵니다. 다음으로 if문으로 들어갑니다. 그리고 LinkedList <Object> 타입의 연결리스트(bucket)가(이) m1을 포함하는지 contains 메서드를 통해서 확인합니다. 여기서 질문입니다.질문 1 : MemberOnlyHash 타입의 m1과 비교를 하는데 bucket은 여전히 Object타입입니다. (Object)bucket이 contains를 사용하는데 bucket은 MemberOnlyHash 클래스가 오버라이딩 한 것을 어떻게 알고 찾아가는지 이해가 되지 않습니다.
-
해결됨김영한의 실전 자바 - 중급 2편
섹션 7. 직접 구현하는 Set3
여기에서 hashCode의 값이 선생님과 다르게 출력되는데 잘못된 게 맞나요?문자 고유의 값이니까 같은 문자라면 어느 컴퓨터나 같은 hashCode가 출력되야 하는 게 맞는거죠??public class MyHashSetV2Main2 { public static void main(String[] args) { Member hi = new Member("hi"); Member jpa = new Member("JPA"); // 대문자 주의! Member java = new Member("java"); Member spring = new Member("spring"); System.out.println("hi.hashCode() = " + hi.hashCode()); System.out.println("jpa.hashCode() = " + jpa.hashCode()); System.out.println("java.hashCode() = " + java.hashCode()); System.out.println("spring.hashCode() = " + spring.hashCode()); MyHashSetV2 set = new MyHashSetV2(10); set.add(hi); // Member 타입의 인스턴스를 myHashSetV2에 넣음. set.add(jpa); set.add(java); set.add(spring); System.out.println("set = " + set); //검색 Member searchValue = new Member("JPA"); boolean result = set.contains(searchValue); System.out.println("hi.contains(" + searchValue + ") = " + result); } //출력 결과 hi.hashCode() = 3329 jpa.hashCode() = 73659 java.hashCode() = 3254818 spring.hashCode() = -895679987
-
미해결김영한의 실전 자바 - 중급 2편
제네릭 연습문제 2번
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.기본생성자를 생성안하니까 오류가 뜨는데 강사님 강의에는 기본생성자를 생성안해도 오류가 안뜨더라구요 toString이 역할을 대신한건가요? 1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]여기에 질문 내용을 남겨주세요.
-
미해결김영한의 실전 자바 - 중급 2편
linkedList는 deque 구현체입니까? 아니면 list 구현체입니까?
1. linkedList는 deque 구현체입니까? 아니면 list 구현체입니까?만일 LIst 구현체인것도 있고 Deque구현체인것도 있으면new LinkedList<>(); 했을때 부모로 덱과 리스트중 누구를 앞에 내세워야합니까?강의에서 linkedList보다 ArrayList가 더 빠르다 하셨는데 그럼 LinkedList 를 쓰는 자리에는 ArrayDeque를 쓰는게 일반적입니까?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
1-L 주몽문제 시간초과 관련 질문입니다 ㅠ
https://www.acmicpc.net/source/share/bc46fa452bbf42209281c4b2e3220c39 이 코드가 솔루션에서는 잘 돌아가는 데,백준에서는 시간초과라고 뜹니다 뭐가 문제인지 알 수 있을까요??
-
해결됨SQL 코딩테스트를 위한 마지막 걸음
Date 강의 / leetcode 1321 질문
# [Setting] USE PRACTICE; DROP TABLE Customer; CREATE TABLE Customer (customer_id int, name varchar(20), visited_on date, amount int); INSERT INTO Customer (customer_id, name, visited_on, amount) VALUES (44, 'Ashley', '2019-01-04', 160), (23, 'Sabo', '2019-01-04', 70), (38, 'Moustafa', '2019-01-05', 90), (30, 'Halley', '2019-01-06', 140), (5, 'Elvis', '2019-01-07', 160), (12, 'Leslie', '2019-01-08', 100), (23, 'Sabo', '2019-01-08', 90), (13, 'Will', '2019-01-09', 170), (20, 'Brock', '2019-01-10', 160), (29, 'Leo', '2019-01-10', 90), (33, 'Isaac', '2019-01-11', 60), (46, 'Selena', '2019-01-12', 100), (4, 'Winston', '2019-01-13', 150), (15, 'Marti', '2019-01-13', 160); SELECT * FROM Customer;# [my practice] select b.visited_on, sum(amount) as amount, round(sum(a.amount) /7, 2) as average_amount from customer a inner join (select distinct date_sub(visited_on, interval 6 day) as week_before, visited_on from customer) b on a.visited_on between b.week_before and b.visited_on group by b.visited_on having count(amount) >= 7 order by b.visited_on;올려주신 방식 외에 inner join시 date 구간으로 조건 넣는 방식으로 시도해 보았습니다.위 데이터로 삽입하는 경우, MySQL Workbench에서는 예상 결과대로 출력 되는데 leetcode에서 오류가 나서 혹시 제가 코드 상에서 간과하고 있는 부분이 있는지 궁금해서 질문 드립니다.leetcode 내에 PostgreSQL로 유사한 방식의 해결 법은 확인했었는데 혹시나 해서 링크 올려봅니다. https://leetcode.com/problems/restaurant-growth/solutions/5040002/well-explained-postgresql-solution-beats-99
-
해결됨김영한의 실전 자바 - 중급 2편
혹시 조건문에서 먼저 비교할 대상의 선점이 이유가 있나요?
[질문 내용]직접 구현하는 배열 리스트1 - 시작 8:25에서o를 중심으로if (o.equals(elementData[i])) { 조건문을 구현하셨는데, 저는 반대로if (elementData[i].equals(o)) {elementData[i]에서 동일한 결과문을 찾았습니다. 결과는 동일하지만, 순서에 우선순위가 있을까요?
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
재귀 함수에 어떻게 접근해야 하는지 잘 모르겠습니다.
재귀함수를 사용해서 문제 풀이를 할 때 어떤 식으로 접근해야 할 지 팁을 주실 수 있나요?예를 들어, 종료조건을 반드시 설정해야 하고 이에 대해 먼저 생각하고 들어가는 건 알겠습니다. 그러나 어느 부분을 재귀시킬지에 대한 감이 아직 잘 없는 것 같아요.어느 부분을 재귀 시켜야 하는지랑, 그 외의 팁이 있으면 좀 받고싶습니다.외워서 푸는건 되는데 이해는 아직 안돼요
-
미해결김영한의 실전 자바 - 중급 2편
직접구현하는 SET4 제네릭과 인터페이스 도입
왜 hashIndex에서 Object 로 매개변수를 받나요?제네릭인 E로 받는게 타입안정성측면에서 좋지않나요??
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
3 - J 주난의 난 질문있습니다,,
http://boj.kr/2b8f07db284d4502b563683fdd715549 테스트 케이스하고 다른 질문 글 반례도 통과합니다.기본적으로 bfs에 0을 만나면 visited에 1을 증가 안해줬고 1을 만나면 증가해줬습니다. 영상 잘 보고 있습니다,, 근데 너무 어려워요 ㅠㅠㅎㅎ
-
미해결10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
algorithm헤더의 sort
교안 p.88과 p.92에 각각 캡처한 사진입니다.두 설명 모두 sort (cmp없이) 를 설명하고 있습니다. first에서 동일한 값이 나오면 second를 기준으로 오름차순 정렬을 진행하는 것으로 알고 있고 실습도 해봤습니다. (아래 실습) #include <bits/stdc++.h> using namespace std; int main() { vector<pair<int, int>> v = { {5, 1}, {2, 2}, {5, 3}, {3,4}, {2, 5} }; sort(v.begin(), v.end()); for (auto it : v) cout << "(" << it.first << ", " << it.second << ")" << "\n"; return 0; } /* (2, 2) (2, 5) (3, 4) (5, 1) (5, 3) */ 따라서 (2,5) -> (2,2) 순으로는 나올 수 없을 것으로 판단했습니다.어느 부분이 잘못됐는지 알고싶습니다~!
-
미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
탐색문제
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요 탐색문제를 공부하고싶은데탐색문제라고 하면 몇 몇 섹션이 해당하는지 알 수 있을까요?
-
미해결자바(Java) 알고리즘 문제풀이 입문: 코딩테스트 대비
comparable관련 질문입니다.
안녕하세요.씨름선수 문제를 풀다가 궁금한 점이 생겨 글남깁니다. comparable 을 구현하여 compareTo를 정의할 때 선행원소 - 후행 원소 가 음수이면 자리를 바꾸지 않고, 양수이면 자리를 바꾸는 것으로 알고 있습니다.문제 코드를 예시로 들어서 return this.h - o.h 라면 선행원소가 this.h 이고 후행원소가 o.h 라는 것은 어떻게 알 수 있나요? 물론 외우면 되긴 하지만 원리가 궁금합니다. 두서 없는 글 읽어주셔서 감사합니다.
-
해결됨10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트
2-C 질문있습니다!
안녕하세요 선생님 😃 대부분의 코드는 이해하였지만, ret값이 1이 아닌 0이라면 오답처리가 되더라구요. 어차피 max함수를 사용하면 ret값이 ret과 cnt 중 더 큰 값으로 바뀔텐데요, 테케도 올바른 출력 값을 가져오는데 무슨 차이가 있는건지 알려주시면 감사하겠습니다 :)
-
미해결파이썬 알고리즘 문제풀이 입문(코딩테스트 대비)
K번째 큰 수
안녕하세요! 궁금한 부분이 있어 질문 드립니다! for i in range(n): for j in range(i+1, n): for m in range(j+1, n): res.add(a[i]+a[j]+a[m]) 해답 코드가 위와 같은데, range를 n까지 설정해주는 이유가 무엇인가요? 저는 i의 범위를 n-2, j의 범위를 n-1로 설정해주어야 한다고 생각했습니다. 문제에서 주어진 '같은 숫자의 카드가 여러장 있을 수 있다' 때문인가요?? n장의 카드를 가지고 있는 경우니깐 i,j,m이 모두 n인 경우가 나올 수 없는것 아닌가 싶어서 여쭤봅니다!