문제 문제 링크 설명 반복문을 돌면서 단어를 집합에 넣는다. 이미 집합에 있는 단어이거나 이전 단어의 끝 문자와 현재 단어의 첫 문자가 다르면 계산해서 반환한다. 반복문을 다 돌았다면 [0, 0]을 반환한다. 코드 function solution(n, words) { let s = new Set(); s.add(words[0]); for (let i = 1; i < words.length; i++) { let prev = words[i - 1]; let curr = words[i]; if (s.has(curr) || prev.at(-1) !== curr.at(0)) { return [(i % n) + 1, parseInt(i / n) + 1]; } else s.add(curr); } return [0, ..
문제 문제 링크 설명 Stack을 활용해서 풀었다. 풀이 function solution(s) { let stack = [s[0]]; for (let i = 1; i < s.length; i++) { let c = s[i]; if (stack.at(-1) === c) stack.pop(); else stack.push(c); } return stack.length === 0 ? 1 : 0; }
문제 링크 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 설명 수학적 지식으로 푼 분들도 계셨다. 나는 백준 2003번 수들의 합 2 문제처럼 투포인터 방식을 응용해서 풀었다. 코드 function solution(n) { let sum = 0; let answer = 0; let left = 1; for (let right = 1; right n) { while (sum > n) { sum -= left; left++; if (sum === n) answer++; } } } return answer; }
이모지 설명 🎨 코드 구조/포맷 개선 ⚡️ 성능 향상 🔥 코드나 파일 삭제 🐛 버그 수정 🚑️ 긴급 수정 (Hotfix) ✨ 새로운 기능 추가 📝 문서 수정 🚀 배포 💄 UI/UX 개선 🎉 초기 커밋 (프로젝트 시작) ✅ 테스트 추가, 테스트 통과 🔒️ 보안 이슈 수정 🔐 비밀 정보 (암호, 인증 토큰, API키 등) 추가/업데이트 ⏪️ 롤백, 이전 상태로 되돌림 💡 주석 추가, 주석 업데이트 🚧 작업 중인 코드, 작업 중인 기능 (WIP) 💚 CI 빌드 수정 ⬇️ 종속성(의존성) 다운그레이드 ⬆️ 종속성(의존성) 업그레이드 📌 종속성(의존성) 버전 고정 👷 빌드 시스템, CI/CD 업데이트 📈 분석, 통계 데이터 업데이트 ♻️ 리팩토링, 코드 재사용 ➕ 의존성(종속성) 추가 ➖ 의존성(종속성) 삭제 🔧..
스티브 잡스 명언 The only way to do great work is to love what you do 위대한 일을 하려면 당신이 하는 일을 사랑해야 한다. You have to be burning with an idea, or a problem, or a wrong that you want to right. If you're not passionate enough from the start, you'll never stick it out. 아이디어, 문제, 또는 고치고 싶은 잘못된 것에 불타야 한다. 시작부터 충분한 열정이 없다면 끝까지 갈 수 없을 것이다. Great things in business are never done by one person. They're done by a tea..
문제 바로가기 설명 DFS나 BFS를 알면 쉽게 풀 수 있는 문제이다.visited를 초기화 할 때, Array.from()을 사용했다.아래와 같은 다른 방식들도 가능하다. visited = new Array(n).fill(false); let visited = []; for(var i =0; i false); let queue = []; function bfs(number) { if (visited[number]) { return; } answer++; visited[number] = true; queue.push(number); while (queue.length) { node = queue.shift(); visited[node] = true; for (let i = 0; i < n; i++) { ..
문제 [프로그래머스] Lv.2 타켓 넘버 설명 DFS로 풀었다. dfs함수의 인자로 인덱스와 부호를 넘겨주었다. 1. 배열의 마지막 요소일 때 sum === target 이라면 answer를 1증가 2. 배열의 다음 요소를 +일때와 -일때 2개로 나누어 dfs로 호출한다. 코드 function solution(numbers, target) { let sum = 0; let answer = 0; function dfs(i, sign) { if (i === numbers.length - 1) { if (sum === target) { answer++; } } else { //+ sum += numbers[i + 1]; dfs(i + 1, "+"); sum -= numbers[i + 1]; //- sum -=..
Array.from() 메서드는 유사 배열 객체(array-like object)나 반복 가능한 객체(iterable object)를 얕게 복사해 새로운Array 객체를 만든다. Array.from은 새로운 배열을 반환하며, 원본 객체는 변경되지 않는다. 구문 Array.from(arrayLike[, mapFn[, thisArg]]) 매개변수 arrayLike 배열로 변환하고자 하는유사 배열 객체나 반복 가능한 객체. mapFn (선택) 배열의 모든 요소에 대해 호출할 맵핑 함수. 매핑 함수는 선택적으로 사용할 수 있으며, 각 요소에 대해 실행되어 변환된 배열을 생성한다. thisArgOptional (선택) mapFn 실행 시에 this로 사용할 값. 예시1 이터러블 객체를 배열로 변환하기 문자열은 이..