안녕하세요 큰돌님, 다름이 아니라 제가 영상에 나왔던 코드를 읽기 편하게 bfs 함수를 따로 함수를 만들어서 예제 입력을 받으면 프로그램이 잘 실행되는데, 제출을 하면 메모리 초과가 뜨네요, 혹시 어떻게 된 경우인지 여쭤보고 싶습니다. 미리 감사합니다! https://www.acmicpc.net/source/share/91f2eb33d6904a5ab55d7d851f317595
자바와 스프링 부트로 생애 최초 서버 만들기, 누구나 쉽게 개발부터 배포까지! [서버 개발 올인원 패키지]
강의에서 이세계의 집 주소 별칭을 현실 세계의 도메인으로 빗대어 설명해 주신 부분에 대한 질문입니다. 1. 강의를 들을 때 ' 서울 에 있는 컴퓨터' == 강의를 듣고 있는 내 노트북 , ' 대전 에 있는 컴퓨터' == 인프런 사이트의 서버 쯤으로 이해하는 게 맞을까요? 처음에는 간단하게 친구 컴퓨터와 내 컴퓨터 사이의 카카오톡으로 데이터를 주고 받는 상황 으로 이해 헀는데, '대전에 있는 컴퓨터'의 주소에 도메인 이름이 붙는 걸 보니 이해가 안 가더라구요. 내 컴퓨터에 spring.com 이라는 주소 이름이 붙을리가 없으니까요.친구 컴퓨터와 내 컴퓨터 사이의 카카오톡 통신은 '친구 노트북와 카카오 서버와의 통신' + '카카오 서버와 내 노트북의 통신' 으로 나뉜다고 이해하는 게 맞을까요? 만약 위에서 카카오톡을 예시로 든 내용이 맞는 내용이라면 추가로 더 궁금한 게 있습니다. 채팅 어플에선 어떤 HTTP Method를 사용하나요? 내가 친구에게 카톡을 보낸다면 POST 같은 메소드를 쓸 수 있을 것 같긴한데, 그건 내가 '보내기' 버튼을 이용해서 카카오 서버에 요청하는 것으로 생각해봤습니다. 그런데 친구에게서 오는 카톡 은 어떻게 나에게 오는 건지는 도무지 생각이 나질 않습니다. 내 컴퓨터에서 카톡 서버에 실시간으로 계속해서 GET과 같은 메소드로 요청 을 하는 것은 아닌 것 같아서요. 카카오와 같은 서버가 내 컴퓨터로 요청하는 경우 가 있다면, 내 컴퓨터는 따로 도메인 주소를 갖고 있지 않으니 그냥 내 컴퓨터 IP를 사용 하나요?
import java.util.ArrayList; import java.util.Scanner; public class Main{ public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int[] nums = new int[n]; Maininf = new Main(); ArrayList<Integer> answerList = inf.solution(nums); for (int i : answerList) { System.out.print(i + " "); } } public ArrayList<Integer> solution(int[] nums) { ArrayList<Integer> answerList = new ArrayList<>(); answerList.add(nums[0]); for (int i = 1; i < nums.length; i++) { if(nums[i] > nums[i-1]) { answerList.add(nums[i]); } } return answerList; } } 위는 제 코드인데.. IDE에서는 결과가 잘 리턴되는데, 채점 사이트에서 리턴이 자꾸 0으로 나온다고 오답처리합니다..! 문제가 뭔지 모르겠습니다
안녕하세요 선생님~~ 지금까지 모르는거 있어도 그냥 계속 반복해서 보고, log 찍어보면서 해결했는데 flatMap 부분에서 도저히 이해 안 가는 부분이 있어서 이렇게 질문드립니다 ㅠㅠ.. 우선 왜 map을 먼저하는지 모르겠습니다.. 중첩배열을 먼저 평탄화 시켜주고 그 다음 map을 했을때에는 예상치 못한 결과나 에러가 발생하지 않았는데요. map을 먼저 하게 되면 중첩 배열을 받아서 전달된 함수를 실행하는 부분에서 계속 결과값이 이상해 집니다... ㅠㅠ 사실 당연한 결과인데 map이든 L.map이 든 [1,2,[3,4],[5]] 이런 중첩배열을 받아서 순회를 하고 a => a+10 이런 함수를 실행하면 당연히 결과 값이 이상해지는데 선생님 코드에서는 어떻게 제대로 작동 되는 건지 궁금합니다...;; 만약 L.flatMap(a => a, [1, 2, [3, 4], [5]]) 이런식으로 하면 그냥 a를 반환만 하니까 중첩배열이 반환 되고 L.flatten 에서 평탄화 되니까 별문제 없는데 a =>a +10 이런식의 함수를 넘겨주면 결과값이 이상해집니다...ㅠ 뭐가 문제 인지 힌트 부탁드립니다~ const curry = fn => (a, ...args) => args.length ? fn(a, ...args) : (...args) => fn(a, ...args); const reduce = (fn, iter, acc) => { if (!acc) { iter = iter[Symbol.iterator](); acc = iter.next().value; } for (const a of iter) { acc = fn(acc, a); } return acc; } const L = {}; L.map = curry(function* (fn, iter) { for (const a of iter) { yield fn(a) } }); const isIterable = (a) => a && a[Symbol.iterator] L.flatten = function* (iter) { for (const a of iter) { if (isIterable(a)) { yield* a } else yield a } } const map = curry((fn, iter) => { const res = []; for (const a of iter) res.push(fn(a)) return res; }) const take = curry((limit, iter) => { const res = []; for (const a of iter) { res.push(a) if (res.length === limit) return res; } return res; }); const go = (...args) => reduce((a, fn) => fn(a), args); const pipe = (f, ...fn) => (...args) => go(f(...args), ...fn); // L.flatMap L.flatMap = curry(pipe( L.map, L.flatten )); const iter = L.flatMap(a => a + 10, [1, 2, [3, 4], [5]]) console.log(...iter) // 결과값 11 12 3 , 4 1 0 5 1 0
안녕하세요 강사님, 질문이 있습니다. grep 커맨드에서 인수 하나만 입력했을 때 그 결과가 무엇을 의미하는지 궁금합니다. 예를들어, 아래와 같이 패턴만 입력하고 file을 입력하지 않은 상태에서 엔터를 누르면, 커서가 아래에 위치하며 아무일도 일어나지 않고 있습니다. grep "startup" | <- 커서가 위치하며 아무런 일도 일어나지 않음 나머지 인수를 입력 받길 기다리는 건가요? 여기서 Ctrl + C를 누르면 원래 프롬프트로 돌아오는 것은 확인했습니다. 저 결과는 어떤 것을 의미하는지 궁금합니다.
[게임 프로그래머 입문 올인원] C++ & 자료구조/알고리즘 & STL & 게임 수학 & Windows API & 게임 서버
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 강의중에 Rookiss 네이버 카페를 보여주시는데, 해당 카페에 가입하기 위한 조건이 있을까요?
자바 기초부터 마스터하기 with 은종쌤 (Do it 자바 프로그래밍 입문) - Part 1(기초편)
싱글톤 패턴으로 클래스 작성시 private static Company company = new Company(); 라고 작성을 하였는데 프로그램 실행 부터 메모리에 올라가는 static 필드가 바로 인스턴스를 생성하는건가요? static 필드와 인스턴스의 생성 시점이 충돌하지는 않나요? 클래스 로딩과 static 필드 중 어떤게 먼저 메모리에 잡히는지 궁금합니다.
강의에서는 구조체를 게임인스턴스 헤더에 바로 만들어서 상관없는데 나중에 따로 헤더파일을 만들어서 구조체를 관리하게 되면 이거도 다른 곳에서 쓸 때 전방선언을 해줘야 하는건가요? 그렇다면 TObjectPtr 을 써서 전방선언을 해야 하나요? 아니면 구조체는 간단하니까 바로 헤더파일을 인클루드 하면 되나요? 초보자라 이 질문이 맞는 질문인지도 모르겠네요
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 똑같은 코드인데 어떤 컴퓨터에서는 되고 다른 컴퓨터에서는 안되는 이유가 뭔지 궁금합니다. https://drive.google.com/file/d/11Zuk3zBvm9QWWpyIQeAWwWIwUGdSc7Bk/view?usp=sharing 이게 제 코드인데 강사님 코드를 다운 받고 돌려도 localhost:8080/index.html 조차 에러가 뜹니다. 뭐가 문제일까요. 저번에 질문했지만 문제가 해결이 되지 않아 한번 더 질문합니다. 감사합니다.
안녕하세요, 메모리 초과 관련 문제가 생겨서 질문드립니다. 제가 생각한 알고리즘을 설명드리자면 2중 벡터 fire의 경로를 구합니다. (bfs) 2중 벡터 player의 경로를 구합니다. (bfs) fire와 player의 각 요소를 비교하여 player의 요소가 작은 경우엔 유지, 아닌 경우엔 -1로 값을 덮어씌웁니다. 최종적으로 vector<vector<int>> player는 다음과 같은 값을 갖습니다. -1 -1 -1 2 -1 -1 -1 1 -1 -1 1 0 -1 -1 -1 -1 해당 player를 다시 bfs로 순회합니다. (시작점은 player의 초기 위치인 0 지점) -> 이걸 하는 이유는 혹여나 player의 길이 fire에 의해 끊기는 경우가 존재할 수 있으므로 입니다. (하지만 이런 경우는 발생하지 않는 것 같습니다.) 마지막으로 player가 갈 수 있는 최종 길만 남게되고, 가장자리의 4변에서 -1이 아닌 최소값을 찾습니다. 이런 알고리즘을 시행했는데 메모리 초과가 뜹니다. 메모리 초과와 관련해서는 visual studio에서 어떻게 디버깅을 해야할지 잘 모르겠습니다. 단순히 생각해보면 각 2차원 벡터는 최대 1000*1000*4byte(int)=4MB의 크기를 갖고, deque는 아마 최대로 해도 4MB 이하의 크기를 갖을 것 같은데 문제의 256MB가 왜 초과가 되는지. 모르겠습니다. 아래는 해당 코드의 링크입니다. http://boj.kr/6145ffa1c073417ab06e3a7e86afe533 강의를 듣고나서는 코드를 수정하여 player의 경로를 구할 때, 미리 구해둔 fire의 경로와 비교하여 fire가 선점한 경우엔 갈 수 없는 경로로 표시하고, 순서 5의 과정을 삭제했습니다. 이러니 해결이 되긴하는데.. 이게 왜 되는건지는 모르겠습니다. 해당 코드는 메모리 10872KB를 썼다고 나옵니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 안녕하세요 @RequestBody와 @ModelAttibute차이를 제대로 이해했는지 궁금하여 여쭤봅니다. 서버로 데이터를 전달하는 방법은 3가지방법이있는데 쿼리파라미터 시에는 get방식 @RequestParam 사용 HTML Form 시에는 get, post 다 지원 @ModelAttibute 사용 message body 시에는post방식 @ReqeustBody 로 받아서 사용하는것이 맞을까요? 각 전달 방법3가지에 get/post방식 매핑과 어노테이션 매칭이 잘 되엇는지 궁금합니다. 그리고 RequestParam , ReqeustBody 를 컨트롤러의 같은 메소드에 사용가능할까요? ex ) public void test(@RequestParam int id, @ReqeustBody Body body) 같이 사용가능하다면 왜 가능한지도궁금합니다ㅜㅜ