그 이전 강의의 함수를 이용해보았습니다!! function anagramValidator(str, str2) { let sh = new Map(); for (let letter of str) { if (sh.get(letter)) sh.set(letter, sh.get(letter) + 1); else sh.set(letter, 1); } for (let letter of str2) { if (!sh.has(letter) || sh.get(letter) < 0) return false; sh.set(letter, sh.get(letter) - 1); } return true; } function subAnagramFinder(str, str2) { const re = []; let subStr; for (let i = 0; i < str.length; i++) { subStr = str[i]; for (let j = i + 1; j < i + str2.length; j++) { subStr += str[j]; } // console.log(subStr); if (anagramValidator(subStr, str2)) re.push(subStr); } return re; }
웹백엔드 희망하고 있어서 공부중인데, 그래도 개발할 때는 재밌고 그랬는데 요즘 코테가 필수라 연습중인데 넘 어렵네요. 이러다 취업을 할 수 있을지 걱정돼요. 특히 알고리즘은 수학머리도 있어야하는거같은데, 점화식 세우는것도 어렵고 문제가 이해안될 때도 많네요. ㅠㅠㅠ 개발은 넘 재밌는데 수학머리 이거 어떡해야하나요.
function mergeHelper(arr, arr2) { let result = []; let i = 0; let j = 0; while (i < arr.length || j < arr2.length) { if (arr[i] <= arr2[j] || j >= arr2.length) { result.push(arr[i]); i++; } else if (arr[i] >= arr2[j] || i >= arr.length) { result.push(arr2[j]); j++; } } return result; }
만약 결과값이 result = [152, 152, 152, 151, 151, 150] 이렇게 나왔다고 가정할때 3번째로 큰수는 150 입니다. 코딩 실력을 늘리고 싶어서 set을 쓰지 않고 어떻게 구현할 수 있을까 생각해보았습니다. 결국 result[i] === result [i+1] 일때 그냥 지나가고 아니면 cnt를 하나 올리는 방법으로 해보았습니다. function kthGreatest(arr, k) { const sum = []; let kth; // 모든 경우의 수를 합하여 sum에 보관 for (let x = 0; x < arr.length - 2; x++) { for (let y = x + 1; y < arr.length - 1; y++) { for (let z = y + 1; z < arr.length; z++) { sum.push(arr[x] + arr[y] + arr[z]); } } } // 정렬 sum.sort((a, b) => b - a); let idx = 0; let count = 0; // k 번째로 큰 수 구함 while (count < k) { // k 번째가 없을 경우 undefined함 if (!sum[idx]) return undefined; if (sum[idx] === sum[idx + 1]) { ++idx; continue; } else { ++count; ++idx; } kth = sum[idx - 1]; // if (!kth) return undefined; } return { kth, sum }; } 도움이 되었으면 좋겠습니다:)
- 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 안녕하세요? 안녕하세요? 저희는 현재 한국 또는 미국에 재직중이신 비디오게임 개발 산업 관련 종사자분들이 직장생활 중 리더십에 관련된 상황을 어떠한 범위까지 경험해 보셨는지 연구하기 위해 서베이에 참여하여 주실 분들을 찾고 있습니다. 이 서베이는 Indiana Institute of Technology (인디애나 공과대학)의 리더십 프로그램 박사 과정의 요구 사항에 따라 수행되고 있는 연구입니다. 약 5분 가량의 시간을 내어 주셔서 서베이 참여를 간곡히 부탁 드립니다! 더불어 주변 직장동료 및 다른 비디오게임 개발자 지인들에게 서베이 링크를 공유하여 참여를 적극 홍보해주시면 대단히 감사하겠습니다! - 누가 참여 가능한가요? 직접적인 게임 개발자 분들 외에도 이 산업에 재직중이신 베타 테스터, 프로그래머, 아티스트, 프로젝트 매니저 등 많은 분들의 참여를 기다리고 있습니다. - 얼마나 걸리나요? 5분 정도 소요됩니다. - 답변은 익명이 보장됩니다. - 여기에서 참여해주세요! (서베이 링크): https://www.psychdata.com/s.asp?SID=192649 #게임과함께평생을 #대의를위해참여하세요 #게임개발 연구 과정에 참여해주셔서 진심으로 감사드립니다! 모두 어려운 시기에 건강 유의하시기 바랍니다.
풀스택을 위한 도커와 최신 서버 기술(리눅스, nginx, AWS, HTTPS, 배포까지) [풀스택 Part3]
우선 강의와는 조금 동떨어진 질문을 올려서 죄송합니다. 마땅히 물어볼만한데가 없어서 여기에 질문올립니다. (문제시 삭제하겠습니다..) 플라스크나 장고(또는 다른 언어의 백엔드 웹프레임워크) 강의를 들으면 해당 프레임워크로 프론트도 다루는 내용을 가르칩니다. 예를 들면 플라스크의 진자템플릿이 있겠지요. 그런데 제가 알기로는 웬만한 회사는 프론트엔드 팀과 백엔드 팀이 따로 존재하고 진자템플릿 같은 문법은 프론트에서 리액트 같은 프레임워크와 ajax 형태로 받아와서 다 처리하는걸로 알고있습니다. (맞나요..?) 그럼 제가 드는 의문은 그러한 강의들에서 진자템플릿 같은 문법을 가르치는 것은 아무래도 프론트엔드 부분을 가르치자면 강의가 너무 길어지고 주제에서 벗어나서 그런건지 아니면 실제 현업에서도 저러한 템플릿 문법이 많이쓰는지 궁금합니다. *크롤링 강의도 잘 들었고 이 도커 강의도 잘 듣고있습니다. 감사합니다.
[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part1: C++ 프로그래밍 입문
void Snailing(int* snail, int size) { int endOfSnail = size * size; int point = -1; int i = 1; int jump = 1; int turn = 0; while (i <= endOfSnail) { int next = jump * (1 + turn * (size - 1)); point += next; for (int x = 0; x < size; x++) { *(snail + point) = i++; if (*(snail + point + next) != 0 || ((point%size) + next) == size || (point + next) >= endOfSnail) break; point += next; } jump = (turn == 1) ? jump * -1 : jump * 1; turn = (turn + 1) % 2; } } 1시간 반 가량 정말 머리를 싸매고 고민하면서 코딩했는데 해설을 보고 현탐이 와버렸습니다... 완전히 다른 스타일이라서 다른 분들이 참조하실 수 있도록 올려놓습니다..