본문 바로가기

전체 글131

Google Task vs TickTick (일정관리, 지속 가능한 습관 만들기) 학생때부터 투두리스트 없이는 못사는 사람이었다. 과제며 행사며 온갖 약속과 일정들을 어떻게 다 기억한단 말인가? 물론 내가 멍청해서일수도 있겠지만... 이렇게 해서라도 일정을 절대 잊지 않으니 직장에서도, 주변 인간관계에서도 사람간에 신뢰를 쌓을 수 있었다. 친구들은 아무리 먼 약속이라도 내가 잊었을까 걱정하지 않는다. 직장에서는 팀의 비서가 된 기분이 들 때도 있다.(난 뿌듯하고 기분 좋았다!) "ㅇㅇ씨 우리 그거 언제였죠?"하고 일정을 체크하고 싶을땐 항상 내게 묻거나, 팀원이 "우리 다음주 수요일에 회식할까요?"하면 내가 "그날 오후에 우리팀 중요한 업무 있잖아요. 언제 끝날지 불확실한데, 6시까지 끝낼수 있을까요?" "아 그랬었지? 그럼 목요일에 합시다." 하는 등... 하지만 이런 다이어리를 쓰.. 2021. 8. 24.
[프로그래머스] 구명 보트 (javascript) 최대한 적은 수의 구명보트를 사용하여 사람들을 모두 구출하는 문제다. 최적의 방법이 존재하는 문제임을 눈치채기가 쉽지 않았다..ㅜㅜ 처음엔 limit이 100이면 40 태우고 60있나 찾고, 다음엔 60보다 작은 최댓값 찾아서 짝을 만들어주려 했다.. 훨씬 간단한 방법이 존재한다. 우선 내림차순으로 people을 정렬한다. [100 60 50 51 40 30] limit=100 이라면 1. 제일 무거운 사람(left)과 제일 가벼운 사람(right)의 무게를 더했을 때, limit보다 크다면, 제일 무거운 사람만 태울 수 있다. => 태웠으므로 left++ 2. 제일 무거운 사람과 제일 가벼운 사람의 무게를 더했을 때, limit보다 작다면, 둘 다 태울 수 있다. => 둘 다 태웠으므로 left++, .. 2021. 8. 23.
[프로그래머스] 직업군 추천하기 (javascript) 직업군별 선호 언어 문자열 배열(table)과, 내 언어 스택 배열(languages), 선호도(preference)를 입력받아 가장 적합한 직업군을 리턴하는 문제이다. 우선 직업군별 선호 언어 문자열 배열(table)이 별로 아름답지 못하게 입력되어 있기 때문에 갈무리가 필요하다. 추후 직업군별 점수 산출이 필요하기 때문에, 언어별로 어떤 직업군에 몇점인지로 정리했다. tables = ["SI JAVA JAVASCRIPT SQL PYTHON C#", "CONTENTS JAVASCRIPT JAVA PYTHON SQL C++", "HARDWARE C C++ PYTHON JAVA JAVASCRIPT", "PORTAL JAVA JAVASCRIPT PYTHON KOTLIN PHP", "GAME C++ C# JA.. 2021. 8. 23.
[프로그래머스] 기능개발 (javascript) 풀어보러 가기 : https://programmers.co.kr/learn/courses/30/lessons/42586 완성까지 남은 기간을 담은 배열을 만들고(remains) remains의 반복을 돌면서 앞의 수보다 큰 수가 나오면 세트로 배포되고, 앞의 수보다 작은 수가 나오면 새로운 배포가 된다. [5, 10, 1, 1, 20, 1]=> 5, 10 / 1, 1, 20 / 1 => [2, 2, 1] 이렇게 되어야 하므로 remains[0] = 5 첫 기능은 무조건 먼저 배포되므로 초기값으로 1 추가 answer = [1]; remains[1] = 10 remains[0] < remains[1]이므로 함께 배포됨. answer[마지막요소]++; answer = [2]; remains[2] = 1 re.. 2021. 8. 20.
[프로그래머스] 상호 평가 (javascript) 상호평가 방식으로 점수를 매기는데 자기 자신에게 준 점수가 받은 점수 중 유일한 최고점/최저점이면 제외하고 평균을 계산한다. 학생별로 받은 점수를 쉽게 계산할 수 있도록 배열을 뒤집는다. (뭐.. i번 학생의 점수를 score[0~n][i]로 해도 되긴 하지만..) 그리고 1) 점수가 제외되지 않는 경우 그냥 총합/인원수를 구하면 된다. 2) 점수가 제외되는 경우 (총합-내가 준 점수)/인원수-1 하면 된다. function solution(scores) { var answer = ''; const s = []; // 학생별 점수가 될 수 있도록 배열 뒤집기 for(let i in scores){ for(let j in scores[i]){ if(!s[j]) s.push([]) s[j].push(scor.. 2021. 8. 20.
[프로그래머스] 부족한 금액 계산하기 (javascript) 탈때마다 첫 이용료의 n배가 되는 놀이기구를 count번 탔을 때 얼마가 모자라는지 리턴하는 문제 가우스 공식을 이용하면 된다. 주의할 점은 돈이 충분하다면 0을 리턴해야 한다. function solution(price, money, count) { // price *1 + price *2 + ... price*count // price(1+2+3+...count) // count *(count + 1)/2 * count const budget = count*(count+1)/2 * price; return budget>money ? budget - money : 0; } 풀어보러 가기 : https://programmers.co.kr/learn/courses/30/lessons/82612 2021. 8. 20.
[LeetCode] 55. Jump Game (javascript) 주어진 배열이 있다. 인덱스 0에서 시작하는데, 요소의 숫자만큼 점프를 할 수 있다.(더 짧게 뛰어도 된다.) 이때, 배열의 끝까지 갈 수 있는지 검사하는 문제이다. Input: nums = [2,3,1,1,4] Output: true nums[0]=2에서 두칸, nums[2]=1에서 한칸, nums[3]=1에서 한칸 가면 도착한다. nums[0]=2에서 한칸, nums[1]=3에서 세칸 가면 도착한다. Input: nums = [3,2,1,0,4] Output: false nums[0]=3에서 세칸을 가도, nums[1]=2에서 두칸을 가도, nums[2]=1에서 한칸을 가도 마지막 요소에 도달할 수 없다. 그러므로 false이다. 이 문제를 접했을 때... DFS로 풀어야 하나? 아니면 브루트포스??.. 2021. 8. 20.
[프로그래머스] N으로 표현 주어진 N을 최대한 적게 사용하여 사칙연산(+, -, *, /)으로 목표하는 number를 만들고, 최소 몇개가 필요한지 구하는 문제이다. 유의할 점은 N=5인 경우 두 개를 사용하면 55로도 만들 수 있지만, 그렇다고 N=5 number=105일때 (5 + 5) = 10 10 + "5" = 105 이렇게는 할 수 없다는 점이다. 이미 사칙연산된 숫자에는 N을 붙일 수 없고, 사칙연산할 원소로만 사용해야 한다. function solution(N, number) { var answer = 0; if(N == number) return 1; // 5 // 55 5+5 5-5 5/5 5*5 // [55 0 10 1 25] // 55 + 사칙연산 // 555, [55 0 10 1 25]* 사칙연산 // 주어진.. 2021. 8. 12.
[프로그래머스] 해시/위장 옷장에서 옷을 꺼내 입되 같은 부위에는 하나의 옷만 입을 수 있다. 빨간 티셔츠, 파란 티셔츠, 검은 모자 => [빨간 티셔츠만, 파란 티셔츠만, 검은 모자만, 빨간 티셔츠와 검은 모자, 파란 티셔츠와 검은 모자] 옷장 안에서 부위별로 옷을 분류한 후, => 모자: 3개, 티셔츠: 2개 ... 한 부위만 입는 경우 => 모자만, 티셔츠만, ... 두 부위만 입는 경우, => 모자와 티셔츠, 모자와 신발, 티셔츠와 신발 ... ... 로 조합으로 경우의 수를 구하면 된다. function solution(clothes) { const count = clothes.length; if(count < 1) return 0; const closet = {}; for(let c of clothes) { if(clo.. 2021. 8. 12.