안녕하세요 선생님 🙂 선생님 풀이를 보고 다시 한번 풀어봤는데요, 아래 코드에서 선생님 코드와의 차이점은 for문 안의 삼항 연산자가 if문의 위에 올라갔다는 점 딱 하나 밖에 없습니다. xstring헤더의 out of range 에러가 떴는데요, 이유가 뭔지 궁금합니다. 항상 도움주셔서 감사합니다 :) http://boj.kr/291382d17703486e8a8f4e790b190e1d
강의 문제를 in list로 푸는 경우의 시간복잡도를 O(n^3)라고 하셨습니다. 잘 이해가 가지 않아 질문드립니다. for loop로 n개의 nums 모든 요소 순회 => O(n) list에 대한 in 연산 수행 => O(n) 최소 한 번은 수행 2번 이상의 경우 while문에서 시간복잡도 계산 in 연산 수행의 반복을 while문으로 수행 worst case => O(n) [1, 2, 3, 4]의 경우 n-1, n-2, n-3, n-4번 수행 이걸 O(n)으로 취급하는건가요? 1. nums의 모든 요소에 대해 항상 while문이 O(n)으로 동작하지 않고 최악의 경우에도 n-1, n-2, n-3, ... 1로 줄어들지 않나요...? 아니면, 2. for loop로 n번 순회하면서 while loop는 n-1, n-2, n-3번 수행하게되니 두 반복문에 의한 시간복잡도는 등차수열 합의 공식에 근거해 최종적으로 O(n^2)가 되고 이 때 매번 반복하는 in연산도 O(n)이니 최종 시간복잡도는 O(n^3)다. 로 이해하는건가요? 19:47 설명 중 어떻게 while이 모든 경우에 n번 수행될 수 있는건지 궁금합니다...
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 제네릭 타입이나 메서드를 정의할 때에 상한 제한을 두기 위해서 <T extends Animal> 로 지정하였는데, 이렇게 지정하면 <Animal> 로 지정하는 것과 같은 효과가 나는 것이 아닌가요? 만약에 맞다면, 굳이 왜 T extends Animal 이라는 방법을 사용하는지 궁금합니다.
const solve = (arr) => { let count = 0; let u = 0; let r = 0; let d = 0; let l = 0; for (let i = 0; i < arr.length; i++) { for (let j = 0; j < arr.length; j++) { let my = arr[i][j] u = i !== 0 ? arr[i - 1][j] : 0 r = j !== arr.length - 1 ? arr[i][j + 1] : 0 d = i !== arr.length - 1 ? arr[i + 1][j] : 0 l = j !== 0 ? arr[i][j - 1] : 0 if (my > u && my > r && my > d && my > l) { count += 1 } } } return count }
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. package sorting; import java.util.LinkedList; import java.util.Scanner; public class LRUMain { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int s = scanner.nextInt(); int n = scanner.nextInt(); LinkedList<Integer> cache = new LinkedList<>(); int[] tasks = new int[n]; for (int i = 0; i < n; i++) { tasks[i] = scanner.nextInt(); } for (int task : tasks) { if (cache.contains(task)) { cache.remove(cache.indexOf(task)); } cache.addFirst(task); if (cache.size() > s) { while (cache.size() > s) { cache.removeLast(); } } } for (int element : cache) { System.out.print(element+" "); } } } 위 방식으로 접근해도 되나요?
안녕하세요 선생님 🙂 급한 마음에 질문하는 양식에 맞춰 질문하지 않았던 것 같습니다 죄송합니다 ㅠㅠ http://boj.kr/436a553bbbb24930908a3c7450ef7599 else if (result.size()) func(); 위의 코드는 str[i]가 숫자가 아니면서 result의 size가 1 이상일 경우라고 이해했습니다. 약간의 변형을 위하여 else if가 아닌 if문으로 변경하여 아래와 같이 변경했더니 결과 값이 이상해졌습니다. if (str[i] >= 97 && result.size()) func(); 이외에도 다방면으로 접근해봤지만 전부 결과 값이 이상하게 나왔습니다. 도대체 저 코드가 의미하는 것이 뭘까요..?? ㅠㅠ
const solve = (arr) => { const result = [] for (let i = 0; i < arr.length; i++) { let count = 1 for(let j = 0; j < arr.length; j++) { if (arr[j] > arr[i]) { count += 1; } } result.push(count); } return result } 조금 간단...해..보이게..? 처음에 count 를 1로 줘서 1등으로 시작하고 풀이해주신 부분과 비슷하지만 살짝은,, 다르게 풀어봤습니다.
안녕하세요 큰돌선생님! 늘 제가 먼저 해보고 선생님 코드를 보는데, 제 코드랑 달리 선생님 코드는 너무 깔끔해서 항상 감동합니다.. 늘 감사합니다 다름이 아니라, http://boj.kr/3f2dfd5dd72a45e69326ea4b3d0e2216 저는 이 문제에서 마지막 벽 하나 없애는 부분을 비트마스킹으로 경우의 수를 만들어서 싹 돌려줬는데요.. 5중 for문..ㅋㅋ으로 시간초과 뜰줄 알았으나 다행히(?) 맞았습니다가 뜨긴했는데 불안해서요.. 이런식으로 짜는 건 많이 비추하시나요?ㅠㅠ 실제 코테였다면 이렇게 하는게 위험한 방법인지 궁금해서 한 번 질문드려요!! 좋은 하루 보내세요!!
안녕하세요 선생님 🙂 다른 문제들을 풀다가 질문드렸던걸 까먹었었네요 ㅠㅠ 드렸던 질문은 해결되었지만 문제를 다시 들여다보니 이해가 가지 않는 부분이 하나 더 있어서 다시 질문드립니다. else if (result.size()) func(); 위의 코드는 str[i]가 숫자가 아니면서 result의 size가 1 이상일 경우라고 이해했습니다. 약간의 변형을 위하여 else if가 아닌 if문으로 변경하여 아래와 같이 변경했더니 결과 값이 이상해졌습니다. if (str[i] >= 97 && result.size()) func(); 이외에도 다방면으로 접근해봤지만 전부 결과 값이 이상하게 나왔습니다. 도대체 저 코드가 의미하는 것이 뭘까요..?? ㅠㅠ
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 여기에 질문 내용을 남겨주세요. //문제 2: 개 타입 반환 //dogHospital.setAnimal(dog); Dog bigger = dogHospital.bigger(new Dog("멍멍이2", 400)); System.out.println(bigger); 문제점 2번에서 dogHospital.setAnimal(dog); 선언을 새로 한 이유가 있나요 ? 주석처리하고 컴파일해도 정상적으로 작동해서 여쭤봅니다.
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예 [질문 내용] 해시 인덱스를 ([데이터 값] % [배열 크기])로 지정하는 원리라는 것을 알게 되었습니다. 데이터 값이 Integer라서 나머지 연산이 가능했는데, 데이터가 다른 타입이면 나머지 연산을 어떻게 하나요?
강의에서 클래스를 작성하실 때, public class Marine extends BioUnit { // 줄바꿈 public Marine(String name, int hp) { super(name, hp); } } 다음과 같이 한 줄 띄고 작성을 하시는데 그 이유가 있나요? 어떤 특별한 컨벤션 같은게 존재하는건지 아니면 편의상 이렇게 작성하시는건지 해당 줄바꿈의 의도가 궁금합니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요 교재 120p에 unordered_map은 정렬이 되지 않는다 라고 했는데 출력 값을 보면 우연인지(?) 입력의 역순으로 출력이 됬습니다 ex) 입력 bcd - aaa - aba , 출력 aba-aaa-bcd 왜 이런 순서로 출력이 됬는지 궁금합니다. 출력도 입력과 마찬가지로 bcd - aaa - aba 로 나와야하는거 아닌가요? 감사합니다
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요. 교재 115에 map은 "자동으로 오름차순으로 정렬되기 때문에 넣은 순서대로 map을 탐색할 수 있는 것이 아닌 아스키코드순으로 정렬된 값들을 기반으로 탐색한다"라고 되어있습니다.그러나 116p에 출력된 값에는 kundol - 박종선 - 이승철 - 주홍철 순으로 출력이 됩니다. 그리고 (it).second를 출력했을 때 100 - 3 - 2 - 1 순인데 왜 이 순서인지 모르겠습니다. 감사합니다
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요. 교재 76p 에서 2차원 배열 fill함수 코드dptj &b[9][10]가 이해가 잘 안됩니다.. (first,last]라서 1차원 배열에서 &a[10]처럼 한 것은 이해가 됬는데 2차원배열에서의 활용을 잘 모르겠습니다 +) 추가로 왜 &b[10][10]가 아닌지, 77p에서 배열 이름으로 초기화할 땐 왜 &b[0][0] + 10*10처럼 하는지 모르겠습니다. 추가 설명해주시면 감사하겠습니다. fill(&b[0][0],&b[9][10],2);