- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요 큰돌님! 항상 좋은 강의 감사합니다! 다름이 아니라 제가 이 문제를 풀 당시, 입력의 범위도 작고 풀이가 딱히 생각이 나지 않아 배열을 이용해 쌩구현을 했습니다. 하지만 N과 J의 범위가 커지면 제가 풀이한 방법으로는 시간복잡도가 커져서 틀리게 되겠죠? 만약, M이 1이고, N, J가 1000만일 때 최악의 경우 사과가 양 끝 인덱스(1번과 1000만번)에만 떨어진다면 시간복잡도는 1000만 * 1000만이 될까요? 코드: http://boj.kr/047fdd5efd2c4f37968a1764f52f9a40
class Suttle<T extends BioUnit> 으로 상한이 정해져있고, 타입 매개변수로 받아서 public class UnitPrinter { static <T extends Shuttle> void printV1(T t) { t.showInfo(); } static void printV2(Shuttle<?> t) { t.showInfo(); } } UnitPrinter를 구현할 때 직접 셔틀에 있는 메서드를 호출할 수 있기 때문에 위와 같은 코드로 구현했습니다. 동작은 제대로 하지만, 혹시 문제점이 존재하는 코드인지, 실무에서 지양하는 코드 구현 방식인지 궁금해서 질문드립니다. 감사합니다.
큰돌님 안녕하세요? 해당문제 메모리제이션 질문 있어서 들고 왔습니다. 아래는 제가 짠 코드고, 전체적인 로직은 해설하고 같은데 mem 쪽이 좀 달라서 질문 들고 왔습니다. http://boj.kr/5fac53ce112b4d7a8781f7c8f21ea24a 저는 mem 쪽을 아래와 같이 처리했는데요, &ret = dp[F][H]; (ret !=0) return ret; 큰돌님 해설에는 조금 다르게 되어 있는 것 같아서요 if(dp[whole][not_whole]) return dp[whole][not_whole]; &ret = dp[whole][not_whole]; Q1. 왜 해설에서 (ret !=0) return ret; 이거를 쓰지 않는건가요? Q2. 아래 두 코드는 사실상 의미가 같은건가요? &ret = dp[F][H]; (ret !=0) return ret; if(dp[whole][not_whole]) return dp[whole][not_whole]; &ret = dp[whole][not_whole]; Q3. 강의 1분 54에서도 "dp가 있으면 그냥 dp를 반환한다"고 설명해주셨는데 위 질문과 관련이 있을까요? "dp가 있으면 그냥 dp를 반환한다"는 말도 이해가 어려워서 추가로 설명 받을 수 있을까요? 답변 미리 감사합니다. 수강자 올림
안녕하세요! 숨바꼭질 문제를 풀다가 trace 배열을 만드는 것 말고, visited의 값 만을 이용해 문제를 풀 수 있을 것 같아서 다음과 같이 코드를 작성했습니다. http://boj.kr/ef5e639dacc44c76a86baa28a9d967b8 visited값에 대한 map을 만들어 값을 역추적 해 나갔습니다! 근데 48% 쯤에서 틀렸다고 나오네요,,, 백준 질문게시판에 적힌 반례들을 모두 넣어봐도 적절한 반례를 못찾겠습니다ㅠㅠㅠ
선생님 안녕하세요! 저는 한번 바텀업 형식으로 풀어봤는데요, http://boj.kr/c788996f4fab486191d7c17ca93ff668 테스트케이스는 다 맞는데 틀렸다고 나오네요 ㅜ 우선 2개의 dp배열을 만들어서 자전거와 도보, 같은 index일 때 두가지 옵션이 서로 더해지지 않게, 즉 겹치지 않게한 것이 저의 의도입니다. 어디서 틀렸을지 잘 감이 안오는데 ㅜㅜ 한번 봐주시면 감사하겠습니다 🙇♀
public static void main(String[] args) { String text = "Orange banana apple apple banana apple"; //코드 작성 String[] textArr = text.split(" "); System.out.println(Arrays.toString(textArr)); Map<String, Object> map = new HashMap<>(); for (String string : textArr) { map.put(string, 0); } for (String key : textArr) { if (map.containsKey(key)) { map.put(key, (map.get(key) + 1)); } } System.out.println(map); } 문제와 풀이1에 3번째 문제입니다! Map<String, Object> map = new HashMap<>(); HashMap을 생성 할 때, 값을 받는 부분은 뭐가 들어갈 지 몰라서 Object를 넣었습니다. 코드를 진행하면서 for (String key : textArr) { if (map.containsKey(key)) { map.put(key, (map.get(key) + 1)); } } 의문이 생긴 건 이 부분입니다. map.put(key, (map.get(key) + 1)); 여기서 오류, 빨간줄이 나왔습니다. -> 오류: java: bad operand types for binary operator '+' first type: java.lang.Object second type: int map을 생성할 때, key는 String으로 받고, value는 Object로 받는다고 선언했는데 왜 오류가 뜨는 건가요? map.get(key) + 1은 int타입으로 나오는데 오토박싱으로 Integer 타입으로 변환되고, Object에 들어갈 수 있지 않나요? 오토박싱이 안 되는 건가 해서 Integer.valueOf()를 써봐도 안 되더라구요..ㅠㅠ 물론 선언하는 부분에서 Object를 Integer로 바꾸면 해결이 되기는 합니다만.. 왜 오류가 나는지 모르겠습니다ㅠㅠ
안녕하세요 코딩 테스트를 공부하고 있는데 이해가 안 되는 부분이 있어 글을 올립니다. 5행에 있는[-1]이 cur_day를 가리키고[1]이 cur_temp를 가리키는 걸로 이해를 하고 있습니다. 궁금한 점: 제가 이해한 부분이 맞는다면 왜 스택 부분에 -1과 1이 들어가는지 궁금합니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요. 강의 잘 듣고 있습니다! 혹시 풀이해주신 코드에서 괄호는 고려하지 않는 이유가 있을까요?
http://boj.kr/a12c58c1df11493f8ba78847feffa3b9 선생님, 안녕하세요~ 완전탐색(재귀방식)으로 해서 어떻게 답을 맞췄습니다. 처음에는 dp테이블에 동전이 n개일때 경우의 수를 저장해야겠다고 생각하고 코드를 짜보았지만, 뭔가 잘 되지않아 dp[34][34] 이런식으로 남은 w가 n개, h가 m개일때 경우의 수를 저장하게 하는 방식으로 해서 통과하였습니다. 그런데 이상한 점은, 한번 dp방식으로 해서 답을 맞췄으면, 그 다음 입력때도 이전에 저장된 dp테이블에 있는 값을 그대로 이용해서 답을 맞출 수 있을 줄 알았는데, 이전에 저장된 dp테이블을 이용하면 다른 답이 나와서, 입력을 할 때마다 dp테이블을 초기화 해주는 방식을 사용하고 있습니다. 음,, 어떤 부분때문에 이렇게 나오는 걸까요??
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 9강을 들으면서 두가지의 궁금증이 생겼습니다. Hashset이 내부에서 Map을 이용한다고 하셨는데, hashSet은 콜렉션이고 map은 아닐 수 있는 지 궁금합니다. stack이랑 queue를 둘 다 deque를 사용하여 구현한다고 하셨는데 이때 peek() 함수의 결과가 똑같은 deque를 사용해도 다른 걸 확인 했습니다. 이게 어떨 때는 stack 구조인지 어떨 때는 queue 구조인지 어떻게 알고 peek()을 해주는 건가요? 입력 할 때 offer와 push를 사용하는 것에 대한 차이를 인지하고 다르게 출력하는 걸까요?
Map<String, Integer> studentMap = new HashMap<>(); . . . Collection<Integer> values = studentMap.values(); studentMap.values() 를 하면 Collection타입으로 반환해준다고 하셨는데 의문이 하나 들었습니다. Collection은 인터페이스, map은 Collection을 상속받지 않음으로 Collection은 studentMap.values() 를 담을 수 없지어야 한다고 생각했는데... 모르겠습니다ㅠㅠ
Set<Integer> set = new TreeSet<>(List.of(30, 20, 20, 10, 10)); set에 값을 넣을 때, List는 전달 할 수 있다고 하셨는데, List.of();를 사용하면 ()안에 값을 List에 넣는 거고, List의 타입은 Set<Integer>를 보고 Integer로 타입추론을 하게되고, List<Integer>이기 때문에 ()안에 들어간 int형 (30, 20, 20, 10, 10)은 오토박싱이 돼서 int -> Integer 타입으로 변경되서 List에 들어간다. 제가 이해한 게 맞나요??ㅠㅠ
제가 실습했던 컴파일된 AnimalHospitalV3.class 파일을 인텔리제이에서 복호화해서 보면 타입 매개변수인 T와 같은 표현이 살아있는데 왜 그런 것일까요? 컴파일 후라면 클래스명이 AnimalHospitalV3<T extends Animal>이 아니라 AnimalHospitalV3 로 바뀌어 있어야할 것 같아서요. 글구 T들은 Object로 변해있어야 할 것 같은데... 궁금합니다
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를 사용해도 딱히 상관이 없나요?
안녕하세요 선생님 해당 코드는 정답코드입니다. 그러나 제가 주석처리한부분으로 코드를 짰을때는 segmentation error가 나와서 그 이유를 여쭤보고 싶습니다. 또한 선생님께서는 size()를 사용하셨고 저는 length()를 사용했는데 size()와 length()의 장단점도 알고싶습니다 http://boj.kr/df71a1d8b94a49cca8ed3d2cbb104d78 감사합니다
교안 32p에 cin을 사용해서 반복횟수를 입력 받고 getline을 사용시에 정수 입력 => 엔터 => 문자열 입력의 흐름이 되고 cin은 개행문자 전까지 입력을 받기 때문에 버퍼에 \n이 남아서 버퍼 플러싱이란걸 해야 함으로 이해했습니다. 그리고 버퍼플러싱이 임시저장소인 버퍼의 데이터를 프로그램에서 사용하기 위해 영구저장소로 가져가는 것임도 확인했습니다. 이 과정에서 2가지 여쭙고싶습니다. 위의 문제로 입력 버퍼에 개행 문자가 남아있다면 이후에 데이터를 입력할 때 남아있는 개행문자에 걸려서 오류가 날 것으로 생각합니다. 그래서 따로 남아있는 개행문자를 처리해야되는 것으로 이해했습니다. 제가 이해한게 맞는지 궁금합니다! 32p의 버퍼 플러싱 코드에서 string bufferflush; getline(cin, bufferflush); 의 코드로 남아있는 개행문자를 버퍼 플러싱 해주는것으로 사료되는데, 위 코드가 어떤 원리로 남아있는 개행문자를 처리해주는지 이해가 가지않습니다.. ㅠ