Loading...

[프로그래머스] 기능 개발 (javascript)

계속 틀리다가 다른 코드를 참고하고 틀린 부분을 알아냈다 남은 일수가 5, 1, 1, 1, 2 인 경우 stack에 [5,1,1,1] 이고 현재 남은 일수가 2일 경우 나는 stack의 마지막 1과 비교했는데 그게 아니라 기준은 5이므로 (먼저 끝나는 일) 가장 앞의 원소와 비교해야 했다. 예제를 못찾으면 잘못된 부분을 못찾으니 ㅠㅠ 열심히 여러 문제 풀어봐야지 function solution(progresses, speeds) { var answer = []; let stack=[]; let days=[]; for(let i=0;i

[swexpert] 2058. 자릿수 더하기 (java, javascript)

1. 자바 풀이 문자열은 바로 int변환이 되지만 문자char는 되지 않길래 -'0'으로 변환했다 import java.util.Arrays; import java.util.Scanner; public class Solution { public static void main(String[] args) { Scanner sc=new Scanner(System.in); int n=sc.nextInt(); String s=Integer.toString(n); int sum=0; for(int i=0; iacc+Number(cur),0); }

[프로그래머스] 완주하지 못한 선수 (Python, javascript)

1. 파이썬 풀이 동명이인이 있을 수 있다 Counter로 빼주면 알아서 0은 사라지는 모양이다 남는 1명의 이름을 list로 반환해주면 된다 from collections import Counter def solution(participant, completion): answer=Counter(participant)-Counter(completion) return list(answer)[0] 2. 자바스크립트 풀이 completion[i]가 undefined가 될 때 participant[i]를 리턴한다 function solution(participant, completion) { participant.sort(); completion.sort(); for(let i=0;i

[LeetCode] 347. Top K Frequent elements (javascript)

/** * @param {number[]} nums * @param {number} k * @return {number[]} */ var topKFrequent = function(nums, k) { const map=new Map(); for(const num of nums){ if(!map.has(num)){ map.set(num,1) }else{ map.set(num,map.get(num)+1); } } const arr=[]; for(const [key,value] of map){ arr.push([key,value]); } arr.sort((a,b)=>b[1]-a[1]); const answer=[]; for(let i=0;i

[LeetCode]3. Longest Substring without repeating characters (javascript)

if(checked[s[i]]) 부분에서 위치가 0일때도 안나왔던 것처럼 인식해서 애먹었다; ㅠ undefined로 명시적으로 처리해줬다. Input: s = "abcabcbb" 뒤의 a가 등장하면 a의 위치는 3으로 바뀌고 문자열 시작위치는 이전 a의 뒤인 b(1)이 되어 가장 긴 문자열은 bca가 된다. ** 찾아보니 Map을 사용해서 풀면 코드를 더 간단히 할 수 있을 것 같다 /** * @param {string} s * @return {number} */ var lengthOfLongestSubstring = function(s) { const checked={}; let result=0; let start=0; for(let i=0;i

[LeetCode] 771. Jewels and Stones (javascript)

/** * @param {string} J * @param {string} S * @return {number} */ var numJewelsInStones = function(J, S) { const cnt={}; for(let i=0;i

[LeetCode] 316. Remove Duplicate letters (javascript)

먼저 각 문자의 총 등장 개수를 저장한다 stack에 b, c, a 가 들어오고 또 b, c가 들어올 때 (b, c, a ,b, c 예제) a가 들어오는 순간 stack에 이미 들어있던 b, c는 뒤에 또 등장하므로 (cnt>0) 이므로 나중에 다시 stack에 넣어주면 되므로 stack에서 없애고 a를 집어넣는다. 뒤에 다시 등장하는 b, c는 cnt==0이므로 또 뒤에 등장하는 b,c가 없어 더 이상 스택에서 제거할 수 없고 지금 사용한다고 보면 된다. /** * @param {string} s * @return {string} */ var removeDuplicateLetters = function(s) { const cnt={} // 각 문자가 등장하는 개수 저장하는 객체 for(let i=0;i..

[LeetCode] 121. Best time to buy and sell stock (javascript)

min은 반복문을 돌면서 가장 작은 값이 들어가게 한다. sum은 현재 위치에서 가장 작은 값 min과 현재 가격 price 차 중 가장 큰 값으로 계속 업데이트 해준다. /** * @param {number[]} prices * @return {number} */ var maxProfit = function(prices) { let min=prices[0]; let sum=0; prices.forEach(price=>{ if(priceprice-min?sum:price-min; }) return sum; };

[LeetCode] 5. Longest Palindromic Substring (javascript)

/** * @param {string} s * @return {string} */ var longestPalindrome = function(s) { function expand(l,r){ //r==s.length까지 검사하는 이유는 substring에서 맨 끝 인덱스가 짤리기 때문이다 while(l>=0 && r

[LeetCode] 49. Group Anagrams (javascript)

각 문자열을 배열로 만들어 정렬한 다음 다시 문자열로 만듬 정렬된 문자열에 해당하는 기존 문자열들을 집어넣음 객체를 돌면서 answer배열에 각 배열들을 넣는다. 1. 객체이용 /** * @param {string[]} strs * @return {string[][]} */ var groupAnagrams = function(strs) { ans=[] dic={} for(let i=0;i{ ans.push(arr) }) return ans }; 2. 객체 없이 배열로만 푸는 방법 /** * @param {string[]} strs * @return {string[][]} */ var groupAnagrams = function(strs) { dic=[] strs.forEach(str=>{ w=str.sp..