본문 바로가기

전체 글178

js 코딩 테스트 : [ 신고 결과 받기 ] 문제 : 신고 결과 받기 LV.1 문제 설명 신입사원 무지는 게시판 불량 이용자를 신고하고 처리 결과를 메일로 발송하는 시스템을 개발하려 합니다. 무지가 개발하려는 시스템은 다음과 같습니다. 각 유저는 한 번에 한 명의 유저를 신고할 수 있습니다. 신고 횟수에 제한은 없습니다. 서로 다른 유저를 계속해서 신고할 수 있습니다. 한 유저를 여러 번 신고할 수도 있지만, 동일한 유저에 대한 신고 횟수는 1회로 처리됩니다. k번 이상 신고된 유저는 게시판 이용이 정지되며, 해당 유저를 신고한 모든 유저에게 정지 사실을 메일로 발송합니다. 유저가 신고한 모든 내용을 취합하여 마지막에 한꺼번에 게시판 이용 정지를 시키면서 정지 메일을 발송합니다. 다음은 전체 유저 목록이 ["muzi", "frodo", "apeac.. 2023. 2. 17.
JavaScript 내장 객체 Map Map Map 객체는 키-값 쌍과 키의 원래 삽입 순서를 기억합니다. 모든 값(객체 및 원시 값 모두)은 키 또는 값으로 사용될 수 있습니다. Map 객체는 키-값 쌍인 집합입니다. 한 Map에서의 키는 오직 단 하나만 존재 합니다. Map 객체는 키-값 쌍으로 반복이 가능하고 반복은 삽입한 순서대로 발생합니다. Map vs Object Object 는 Map과 유사합니다. 둘 다 값을 가리키는 키를 설정하고, 해당 값을 받아오며, 키를 삭제하며, 키에 무언가가 저장되었는지 여부를 알 수 있습니다. 그러나 경우에 따라서는 아래와 같이 Map이 선호되는 중요한 차이점이 존재한다 1. 보안 Object : 공격자 객체의 프로토타입을 재정의 가능 Map : 사용자가 제공하는 키와 값에 대해서 안전하게 사용할 .. 2023. 2. 17.
JS 내장객체 Array 메서드 정리 항상 안외우고 검색하는 짓을 그만 할 때가 되었다. 조금은 외우자 js 내장객체 Array 메서드 기본적인 기능 // 이거 배열임 ? Array.isArray() // 정수 값을 받아, 배열에서 해당 값에 해당하는 인덱스의 요소를 반환 // 대괄호 표기법 보다 좋은점 맨뒤 요소 반환시 편함 array.at(-1) Array.prototype.at(index) // 주어진 판별 함수를 만족하는 첫 번째 요소의 값을 반환 없으면 undefined // .findLast 뒤에서부터 Array.prototype.find(fn(element, index, array)) // 주어진 판별 함수를 만족하는 배열의 첫 번째 요소에 대한 인덱스 반환 // .findLastIndex 뒤에서부터 Array.prototype.. 2023. 2. 16.
js 코딩 테스트 : [ 문자열 나누기 ] 문제 : 문자열 나누기 LV.1 문제 설명 문자열 s가 입력되었을 때 다음 규칙을 따라서 이 문자열을 여러 문자열로 분해하려고 합니다. 먼저 첫 글자를 읽습니다. 이 글자를 x라고 합시다. 이제 이 문자열을 왼쪽에서 오른쪽으로 읽어나가면서, x와 x가 아닌 다른 글자들이 나온 횟수를 각각 셉니다. 처음으로 두 횟수가 같아지는 순간 멈추고, 지금까지 읽은 문자열을 분리합니다. s에서 분리한 문자열을 빼고 남은 부분에 대해서 이 과정을 반복합니다. 남은 부분이 없다면 종료합니다. 만약 두 횟수가 다른 상태에서 더 이상 읽을 글자가 없다면, 역시 지금까지 읽은 문자열을 분리하고, 종료합니다. 문자열 s가 매개변수로 주어질 때, 위 과정과 같이 문자열들로 분해하고, 분해한 문자열의 개수를 return 하는 함수.. 2023. 2. 16.
js 코딩테스트 : [ 둘만의 암호 ] 문제 : 둘만의 암호 LV. 1 문제 설명 두 문자열 s와 skip, 그리고 자연수 index가 주어질 때, 다음 규칙에 따라 문자열을 만들려 합니다. 암호의 규칙은 다음과 같습니다. - 문자열 `s`의 각 알파벳을 `index`만큼 뒤의 알파벳으로 바꿔줍니다. - `index`만큼의 뒤의 알파벳이 `z`를 넘어갈 경우 다시 `a`로 돌아갑니다. - `skip`에 있는 알파벳은 제외하고 건너뜁니다. 예를 들어 s = "aukks", skip = "wbqd", index = 5일 때, a에서 5만큼 뒤에 있는 알파벳은 f지만 [b, c, d, e, f]에서 'b'와 'd'는 skip에 포함되므로 세지 않습니다. 따라서 'b', 'd'를 제외하고 &#.. 2023. 2. 15.
js 코딩테스트 : [ 개인정보 수집 유효기간 ] 문제 : 개인정보 수집 유효기간 LV.1 문제 설명 고객의 약관 동의를 얻어서 수집된 1~n번으로 분류되는 개인정보 n개가 있습니다. 약관 종류는 여러 가지 있으며 각 약관마다 개인정보 보관 유효기간이 정해져 있습니다. 당신은 각 개인정보가 어떤 약관으로 수집됐는지 알고 있습니다. 수집된 개인정보는 유효기간 전까지만 보관 가능하며, 유효기간이 지났다면 반드시 파기해야 합니다. 예를 들어, A라는 약관의 유효기간이 12 달이고, 2021년 1월 5일에 수집된 개인정보가 A약관으로 수집되었다면 해당 개인정보는 2022년 1월 4일까지 보관 가능하며 2022년 1월 5일부터 파기해야 할 개인정보입니다. 당신은 오늘 날짜로 파기해야 할 개인정보 번호들을 구하려 합니다. 모든 달은 28일까지 있다고 가정합니다. .. 2023. 2. 15.
git github 처음부터 다시 배우기 - 6. git hub 활용 1. Pull request 변경사항을 merge하기 전 리뷰를 거쳐 팀원들의 동의를 거친 뒤 대상 브랜치에 적용 풀 리퀘스트 사용하기 새로운 브랜치 생성 후 변경사항 커밋하여 푸시 GitHub 레포지토리 페이지에서 Compare & pull request 버튼 클릭 또는 ~ branches에서 New pull request 클릭 메시지 작성 후 Create pull request 클릭 풀 리퀘스트 검토 후 처리하기 GitHub 레포지토리 페이지에서 Pull requests 탭 클릭 대상 풀 리퀘스트 클릭하여 내용 검토 의견이 있을 시 코멘트 달기 반려해야 할 시 Close pull request 승인할 시 Merge pull request 2. Issue 버그나 문제 제보, 추가할 기능 등의 이슈 소통.. 2023. 2. 15.
JavaScript Set Set Set 객체는 자료형에 관계 없이 원시 값과 객체 참조 모두 유일한 값을 저장할 수 있습니다. Set 객체는 값 콜렉션으로, 삽입 순서대로 요소를 순회할 수 있습니다. 하나의 Set 내 값은 한 번만 나타날 수 있습니다. 즉, 어떤 값은 그 Set 콜렉션 내에서 유일합니다. NaN과 undefined도 Set에 저장할 수 있습니다. 원래 NaN !== NaN이지만, Set에서 NaN은 NaN과 같은 것으로 간주됩니다. 생성자 Set() Set([1, 3, '1', { a:0, b:1, c:2}]) 관련 속성 // 값들의 수량 리턴 .size 관련 메서드 // val 값을 추가한 set 객체 리턴 .add(val) // val 값을 삭제 하고 삭제성곡 여부를 boolean 으로 리턴함.. 2023. 2. 14.
git github 처음부터 다시 배우기 - 5. git 활용 1. git clean 명령어 Git에서 추적(동록)하지 않는 파일들 삭제 옵션 설명 -n 삭제될 파일들 보여주기 -i 인터렉티브 모드 시작 -d 폴더 포함 -f 강제로 바로 지워버리기 -x ⚠️ .gitignore에 등록된 파일들도 삭제 위의 옵션들을 조합하여 사용 ※ 💡 흔히 쓰이는 조합: git clean -df 2. git restore 명령어 특정 파일을 지정된 상태로 복구 파일 여러 개를 수정하고 아래 명령어들 사용해보기 git restore (파일명) 워킹 디렉토리의 특정 파일 복구 파일명 자리에 . : 모든 파일 복구 변경상태를 스테이지에서 워킹 디렉토리로 돌려놓기 git restore --staged (파일명) 파일을 특정 커밋의 상태로 되돌리기 git restore --source=(헤.. 2023. 2. 13.
git github 처음부터 다시 배우기 - 3. git 디테일 📕 git 3 가지 상태 1. Working directory untracked: Add된 적 없는 파일, ignore 된 파일 tracked: Add된 적 있고 변경내역이 있는 파일 git add 명령어로 Staging area로 이동 2. Staging area 커밋을 위한 준비 단계 예시: 작업을 위해 선택된 파일들 git commit 명령어로 repository로 이동 3. Repository .git directory라고도 불림 커밋된 상태 📘 파일의 삭제와 이동 1. git rm tigers.yaml 를 삭제해본 뒤 git status 한 결과 파일의 삭제가 working directory에 있음 git reset --hard로 복원 git rm tigers.yaml로 삭제하고 git stat.. 2023. 2. 13.
git github 처음부터 다시 배우기 - 4. commit 디테일 📗 좋은 커밋 1. 하나의 커밋에는 한 단위의 작업을 가져야한다. 한 작업을 여러 버전에 걸쳐 커밋하지 않습니다. 여러 작업을 한 버전에 커밋하지 않습니다. 2. 커밋 메시지는 어떤 작업이 이뤄졌는지 명확해야한다. 팀원들과 소통이 제일 중요하다 커밋 메시지 컨벤션 ※ 널리 사용되는 커밋 메시지 작성방식 스타일 type: subject body (optional) ... ... ... footer (optional) ※ 예시 feat: 압축파일 미리보기 기능 추가 사용자의 편의를 위해 압축을 풀기 전에 다음과 같이 압축파일 미리보기를 할 수 있도록 함 - 마우스 오른쪽 클릭 - 윈도우 탐색기 또는 맥 파인더의 미리보기 창 Closes #125 Type 타입 설명 feat 새로운 기능 추가 fix 버그 수정.. 2023. 2. 9.
git github 처음부터 다시 배우기 - 2. git hub 📗 깃 허브 기본세팅 관련 Personal access token 설정 토큰 발급 우측 상단의 프로필 - Settings Developer Settings Personal access tokens - Generate new token repo 및 원하는 기능에 체크, 기간 설정 뒤 Generate token 토큰 안전한 곳에 보관해 둘 것 (처음 노출된 이후 다시 볼 수 없음) 컴퓨터에 저장하기 윈도우 가이드 Windows 자격 증명 관리자 Windows 자격 증명 선택 git:https://github.com 자격 정보 생성 사용자명과 토큰 붙여넣기 맥 가이드 (링크) Keychain Access 앱 실행 github의 인터넷 암호 항목 선택 사용자명(계정 칸)과 토큰(암호 보기 누른 뒤 오른쪽 칸) .. 2023. 2. 6.