The journey to becoming a developer

My future is created by what I do today, not tomorrow.

Total 28

알고리즘 스터디 42주차 - [프로그래머스] 크기가 작은 부분 문자열, [LeetCode] Assign Cookies

1. 크기가 작은 부분 문자열 (Level 1) Problem Summary 숫자로 이루어진 문자열인 t, p가 주어진다. t에서 p와 길이가 같은 부분 문자열 중, 부분 문자열이 나타내는 수가 p보다 작거나 같은 것이 몇 번 나오는지 횟수를 리턴한다. Solution function solution(t, p) { let answer = 0; const length = p.length; const pNum = Number(p) for (let i = 0; i b - a); let answer = 0; for (let i = 0; i < g.length; i++) { if (!s.length) return answer; const child = g[i]; while (s.length) { const coo..

Algorithms 2023.05.28

알고리즘 스터디 40주차 - [프로그래머스] 방문 길이, 점프와 순간 이동

1. 방문 길이 (Level 2) Problem Summary 명령어가 주어진다. 이 명령어대로 캐릭터는 움직이고, “처음 걸어본 길의 길이”를 구해야 한다. 좌표평면의 경계를 넘어가는 명령어는 무시한다. 캐릭터는 0,0에서 시작하고, 경계는 5, -5이다. Solution function solution(dirs) { let answer = 0; const loc = { x: 0, y: 0 }; const set = new Set(); for (const dir of dirs) { const curLoc = `${loc.x}${loc.y}`; switch (dir) { case 'U': loc.y -5 && loc.y--; bre..

Algorithms 2023.04.30

알고리즘 스터디 39주차 - [프로그래머스] 광물 캐기, 할인 행사, 대충 만든 자판

1. 할인 행사 (Level 2) Problem Summary want 배열에 있는 제품과 수량이 할인하는 날짜와 10일 연속으로 일치할 경우의 수 구하기 Solution function solution(want, number, discount) { // 1. 물건과 물건의 개수를 매핑하기 const wantMap = want.reduce((map, el, idx) => { map.set(el, number[idx]); return map; }, new Map()); let count = 10; // 물건 10개가 모두 할인되는지 체크해 줄 변수 let answer = 0; discount.forEach((_, i) => { // 10개를 체크해줘야 하므로 이런 식으로 범위 정함 // 지금 시작하는 값으..

Algorithms 2023.04.23

프로그래머스 레벨 2 : [1차] 캐시 (자바스크립트)

Description cache.includes(city); if (cacheSize === 0) return MISS * cities.length; cities.forEach(city => { city = city.toUpperCase(); if (cacheHit(city)) { time += HIT; cache.splice(cache.indexOf(city), 1); } else { time += MISS; if (cache.length >= cacheSize) cache.shift(); } cache.push(city); }); return time; } 실행 시간은 0, 캐시는 빈 배열로 설정하였다. 하드 코딩을 피하고 싶어서 HIT, MISS라고 각각의 실행시간에 이름을 붙여 주었다. cache..

[프로그래머스 Level 1] 3진법 뒤집기 (자바스크립트)

Description 자연수 n이 매개변수로 주어집니다. n을 3진법 상에서 앞뒤로 뒤집은 후, 이를 다시 10진법으로 표현한 수를 return 하도록 solution 함수를 완성해주세요. Constraints n은 1 이상 100,000,000 이하인 자연수입니다. My Solution // My solution 1 function solution(n) { return parseInt(n.toString(3).split('').reverse().join(''), 3); } // My solution 2 function solution(n) { return parseInt([...n.toString(3)].reverse().join(''), 3); } toString을 이용해 n을 3진법으로 변환한 후,..

[프로그래머스 Level 1] 2016년 (자바스크립트)

Description 2016년 1월 1일은 금요일입니다. 2016년 a월 b일은 무슨 요일일까요? 두 수 a ,b를 입력받아 2016년 a월 b일이 무슨 요일인지 리턴하는 함수, solution을 완성하세요. 요일의 이름은 일요일부터 토요일까지 각각 SUN,MON,TUE,WED,THU,FRI,SAT 입니다. 예를 들어 a=5, b=24라면 5월 24일은 화요일이므로 문자열 "TUE"를 반환하세요. Constraints 2016년은 윤년입니다. 2016년 a월 b일은 실제로 있는 날입니다. (13월 26일이나 2월 45일같은 날짜는 주어지지 않습니다) My Solution function solution(a, b) { const week = ['SUN', 'MON', 'TUE', 'WED', 'THU',..

[프로그래머스 Level 1] 핸드폰 번호 가리기 (자바스크립트)

Description 프로그래머스 모바일은 개인정보 보호를 위해 고지서를 보낼 때 고객들의 전화번호의 일부를 가립니다. 전화번호가 문자열 phone_number로 주어졌을 때, 전화번호의 뒷 4자리를 제외한 나머지 숫자를 전부 *으로 가린 문자열을 리턴하는 함수, solution을 완성해주세요. Constraints s는 길이 4 이상, 20이하인 문자열입니다. My Solution function solution(phone_number) { return '*'.repeat(phone_number.length - 4) + phone_number.slice(-4); } 휴대폰 번호 길이에서 4f를 뺀 만큼 *을 만들어주고, 휴대폰 번호에서 마지막 4자리를 추출하기 위해 slice(-4)를 사용한다. sli..

[프로그래머스 Level 1] 나머지가 1이 되는 수 찾기 (자바스크립트)

Description 자연수 n이 매개변수로 주어집니다. n을 x로 나눈 나머지가 1이 되도록 하는 가장 작은 자연수 x를 return 하도록 solution 함수를 완성해주세요. 답이 항상 존재함은 증명될 수 있습니다. Constraints 3 ≤ n ≤ 1,000,000 My Solution function solution(n) { for (let i = 2; i < n; i++) { if (n % i === 1) return i; } } for문의 초기값을 let i = 2로 지정하였다. 제한 조건에서 n은 3 이상이므로, 나누는 수(i)의 최솟값이 1이 될 순 없기 때문에 1이 아닌 2부터 시작하였다. Other's Solutions function solution(n) { let answer =..

1 2 3