카일_

ROOT

Algorithm/프로그래머스

프로그래머스 | #Lv1 "x만큼 간격이 있는 n개의 숫자"

문제 설명 함수 solution은 정수 x와 자연수 n을 입력 받아, x부터 시작해 x씩 증가하는 숫자를 n개 지니는 리스트를 리턴해야 합니다. 다음 제한 조건을 보고, 조건을 만족하는 함수, solution을 완성해주세요. 제한 조건 x는 -10000000 이상, 10000000 이하인 정수입니다. n은 1000 이하인 자연수입니다. 나의 풀이 function solution(x, n) { var answer = []; for(let i=1; i (i + 1) * v) } 마무리 두 수 x와 n을 입력 받아 x부터 시작해서 x씩 증가하는 숫자를 n개 지니는 배열을 리턴하는 문제다. 빈 배열을 만들고 간단하게 for문을 통해 배열에 증가하는 숫자를 한개 씩 넣어 생성된 배열을 반환했다. 다른 사람의 풀이..

Algorithm/프로그래머스

프로그래머스 | #Lv1 "문자열을 정수로 바꾸기"

문제 설명 문자열 s를 숫자로 변환한 결과를 반환하는 함수, solution을 완성하세요. 제한 조건 s의 길이는 1 이상 5이하입니다. s의 맨앞에는 부호(+, -)가 올 수 있습니다. s는 부호와 숫자로만 이루어져있습니다. s는 "0"으로 시작하지 않습니다. 나의 풀이 function solution(s) { return Number(s); } 다른 풀이 function strToInt(str){ return str/1 } function strToInt(str){ return +str; } 마무리 제목 그대로 문자열을 정수로 바꾸는 문제였다. 나는 Number() 를 사용해서 간단하게 바꿨다. 다른 사람의 문제풀이를 보고 경악을 금치 못했다. 자바스크립트는 산술연산자가 있으면 정수 형태인 Numbe..

Algorithm/프로그래머스

프로그래머스 | #Lv1 "나머지가 1이 되는 수 찾기"

문제 설명 자연수 n이 매개변수로 주어집니다. n을 x로 나눈 나머지가 1이 되도록 하는 가장 작은 자연수 x를 return 하도록 solution 함수를 완성해주세요. 답이 항상 존재함은 증명될 수 있습니다. 제한 조건 3 ≤ n ≤ 1,000,000 나의 풀이 function solution(n) { var answer = 1; while (n % answer != 1) answer++; return answer; } 다른 풀이 function solution(n, x = 1) { while (x++) { if (n % x === 1) { return x; } } } const solution = function(n) { for (let i=0; i

Algorithm/프로그래머스

프로그래머스 | #Lv1 "하샤드 수"

문제 설명 양의 정수 x가 하샤드 수이려면 x의 자릿수의 합으로 x가 나누어져야 합니다. 예를 들어 18의 자릿수 합은 1+8=9이고, 18은 9로 나누어 떨어지므로 18은 하샤드 수입니다. 자연수 x를 입력받아 x가 하샤드 수인지 아닌지 검사하는 함수, solution을 완성해주세요. 제한 조건 x는 1 이상, 10000 이하인 정수입니다. 나의 풀이 function solution(x) { let sum = 0; let arr = (x+'').split(''); for(let i=0; i

Algorithm/프로그래머스

프로그래머스 | #Lv1 "정수 내림차순으로 배치하기"

문제 설명 함수 solution은 정수 n을 매개변수로 입력받습니다. n의 각 자릿수를 큰것부터 작은 순으로 정렬한 새로운 정수를 리턴해주세요. 예를들어 n이 118372면 873211을 리턴하면 됩니다. 제한 조건 n은 1이상 8000000000 이하인 자연수입니다. 나의 풀이 function solution(n) { return Number((n+'').split('').sort().reverse().join('')); } 마무리 입력 받은 수를 내림차 순으로 정렬해서 하나의 수로 반환하는 문제였다. 다양한 함수를 사용했다. 1) 문자배열로 만들기 위해 (n+'').split('')을 사용 2) 배열을 오름차순으로 정렬하기 위해 sort()를 사용 3) 내림차순으로 만들기 위해 reverse()를 사..

Algorithm/프로그래머스

프로그래머스 | #Lv1 "문자열 내 p와 y의 개수"

문제 설명 대문자와 소문자가 섞여있는 문자열 s가 주어집니다. s에 'p'의 개수와 'y'의 개수를 비교해 같으면 True, 다르면 False를 return 하는 solution를 완성하세요. 'p', 'y' 모두 하나도 없는 경우는 항상 True를 리턴합니다. 단, 개수를 비교할 때 대문자와 소문자는 구별하지 않습니다. 예를 들어 s가 "pPoooyY"면 true를 return하고 "Pyy"라면 false를 return합니다. 제한 조건 문자열 s의 길이 : 50 이하의 자연수 문자열 s는 알파벳으로만 이루어져 있습니다. 나의 풀이 function solution(s){ s = s.toLowerCase(); let check_p = s.split('p').length; let check_y = s.sp..

Project/SENTENCE U

[SENTENCE U] SweetAlert/버그 수정

SweetAlert 사용 기존에 모든 알림창은 redhot-toast를 사용했고, 프롬프트창은 기본 window.promt를 사용했다. SweetAlert를 사용하게 된 계기는 iOS 디바이스에서 window.prompt가 실행되지 않아 서비스워커를 업데이트하지 못하는 문제가 발생했다. SweetAlert2 A beautiful, responsive, customizable and accessible (WAI-ARIA) replacement for JavaScript's popup boxes sweetalert2.github.io 너무나 많은 옵션들이 있어서 Alert, Confirm, Promt 등 다양하게 사용할 수 있다. 그리고 확인과 취소의 결과에 따라 promise도 사용 할 수 있다. 그 점에..

Project/SENTENCE U

[SENTENCE U] 세션 구현/PWA 설정

로그인 정보 세션 구현 쿠키로 로그인 정보를 저장하고 인증 미들웨어에서는 쿠키에서 유저정보를 가져와 DB에서 복호화한 토큰으로 유저 정보를 찾아 인증상태를 넘겨줬다. 쿠키의 단점 가장 큰 단점은 보안에 취약하다는 점이다. 요청 시 쿠키의 값을 그대로 보내기 때문에 유출 및 조작 당할 위험이 존재한다. 쿠키에는 용량 제한이 있어 많은 정보를 담을 수 없다. 웹 브라우저마다 쿠키에 대한 지원 형태가 다르기 때문에 브라우저간 공유가 불가능하다. 쿠키의 사이즈가 커질수록 네트워크에 부하가 심해진다. [WEB] 🌐 세션 / 쿠키 🍪 차이 정리 비연결성(Connectionless)과 비상태성(Stateless) HTTP 프로토콜에는 비연결성(Connectionless)과 비상태성(Stateless)이라는 특징이 있..

Project/SENTENCE U

FE취준생 혼자서 만든 동기부여 공유 서비스 프로젝트 후기(ver1)

약 1개월 간 뼈를 갈아서 만들어 공식적으로 오픈했습니다. SENTENCE U | 문장공유 커뮤니티 짧은 글로 사람들에게 동기부여와 여러 긍정적인 메시지를 보내보세요! www.sentenceu.co.kr 🙏🏻 센텐스유는 짧은 글로 사람들에게 동기부여와 여러 긍정적인 메시지를 담기위해 만들어진 공간입니다. 오직 온라인의 정보에 의존해 혼자서 제작한 1인 프로젝트입니다. 많은 피드백 부탁드립니다. 어쩌다 만들게 되었는가! "FE개발자가 되어야지!" 하고 어느새 반년이 지났습니다. 6개월 간의 학원 대장정을 마치고 부족한 실력으로 취업에 힘을 쏟을까, 뭐라도 더 공부해봐서 조금이나마 역량을 높인 후 취업을 할까 두 고민 중에 후자를 택해서 학원을 마치고 계속 생각해왔던 프로젝트를 직접 만들어보자고 다짐했습니다..

Project/SENTENCE U

Day 35 | 정적파일 캐싱/하위페이지 서빙

정적파일 캐싱 정적파일들을 브라우저에 캐싱을 해놓지 않아 로드할 때마다 약 2~3초의 로드시간이 소요됐다 express에서 폰트/이미지/JS파일 등 정적파일들을 캐싱처리해줬다. app.use( express.static(path.join(__dirname, 'build'), { maxAge: 2629800, immutable: true, }), ); app.use( '/src', express.static(path.join(__dirname, 'build/src'), { maxAge: 2629800, immutable: true, }), ); 첫 접속 이후에는 정적파일들이 캐싱되어 밀리초 단위의 로드시간이 소요된다. 애플리케이션 탭에 Cache Storage를 확인해보면 캐싱이 잘 된 것을 볼 수 있다...