본문 바로가기

반응형

ProgramSoliving

(197)
리트코드: Longest Palindromic Substring /** * @param {number[]} nums1 * @param {number[]} nums2 * @return {number} */ var findMedianSortedArrays = function(nums1, nums2) { return medianValue(nums1, nums2); }; const medianValue = (nums1, nums2) => { const len = nums1.length + nums2.length; const median = parseInt(len / 2); let index = -1; let i = 0; let j = 0; let tmp = 0; let result = 0; while(true) { if( len % 2 == 1 && index == medi..
리트코드: Median of Two Sorted Arrays 투포인터 문제이다. 중복이없는 가장 긴 문자열을 찾는 문제. 문자열주고 가장긴? 이런거나오면 그냥 투포인터생각하면 쉽다. /** * @param {string} s * @return {number} */ var lengthOfLongestSubstring = function(s) { const array = new Array(200,false); const len = s.length; let front = 0; let rear = 0; let result = 0; let sum = 0; while(true) { const target = s.charCodeAt(rear); result = result > sum ? result : sum; if(rear == len||front> rear) break; ..
리트코드: 2. Add Two Numbers javascript 2년만에 PS를 다시 시작한다. 시작은 무난한 리코드 미디엄 문제.. ListNode 라는 릿코드에서 제공하는 자료구조를 이용해서 문제를 해결한다. ListNode는 단방향 연결리스트이다. 각각의 l1, l2의 reverse 값을 더한후 다시 reverse 하기 때문에 처음 각각의 노드들을 순회하면서 값을 더해주는 값 자체가 정답이된다. 주의할점은 각각의 노드에서 더이상 순회할게 없으면 0 이 될것이고, 각각의 노드에서 10이상의 값은 다음 node로 넘겨주면 된다. while 탈출 조건으로는 다음으로 넘길값이 없으면서 순회할 노드가 없는 경우 탈출하게 된다. /** * Definition for singly-linked list. * function ListNode(val, next) { * this...
프로그래머스 : 길찾기 게임 전위 순회, 후위 순회를 트리에 따라서 하는 문제지만. 이값들을 좌표상에 있는 문자열로 주어진다. hash를 이용해서 접근하여 쉽게 풀수 있다. const hash = new Map(); const set = new Set(); const preOrder = (x, y, level, maxLevel, arrSet, pre, start, end) => { pre.push(hash.get(x+","+y)); if(level + 1 >= maxLevel) return; const nextY = arrSet[level + 1]; // 왼쪽 for(let j=start;j= maxLevel) return; const nextY = arrSet[level + 1]; // 왼쪽 for(let j=start;j
프로그래머스 : 금과 은 운반하기 이분탐색 알고리즘. 이분탐색이라는 알고리즘을 알아도 Gmax = 골드 우선 탐색 Smax = 실버 우선 탐색 이라고 했을 때 a + b = b && add >= a + b) { end = mid - 1; answer = Math.min(mid, answer); }else { start = mid + 1; } } return answer; }
프로그래머스 : 미로 탈출 문제유형 : 비트마스크, 다익스트라 trap < 10 제한 상황을 통해서 현재 트랩의 모든 겨웅의수는 1024가지 입니다. n값은 1000이므로 [1024][1000] 형태의 다익스트라 digit 값을 만듭니다. 이제 각 노드에 방문할 때 현재값이 trap이라면 비트마스크를 이용해서 값을 추가해줍니다. 여기서 XOR 연산을 이용한다면 쉽게 트랩의 비트마스클 할 수 있습니다. 만약 4개 트랩에 형재 1번째 트랩만 방문한 상태라면 0001 형태가됩니다. 이때 2번째 트랩을 방문 했다면 0011 이 되어야하는데 0001 ^ 0010 = 0011 로 XOR연산을 할 수 있습니다. 마찬가지로 0001 상태에서 또 첫번째 트랩을 방문했다면 0000 이 되어야하는데 0001 ^ 0001 = 0000 인것을 활용하면 ..
프로그래머스 : 수식최대화 JAVA import java.util.*; class Solution { static String[][] combinations = {{"+","-","*"},{"+","*","-"},{"-","+","*"},{"-","*","+"},{"*","+","-"},{"*","-","+"}}; public long solution(String expression) { String split[] = expression.split("(?
프로그래머스: 위클리코드 3주차 (퍼즐조각 채우기) const dy = [1,-1,0,0]; const dx = [0,0,1,-1]; const Mapping = (list) => { let minY = Number.MAX_VALUE; let minX = Number.MAX_VALUE; for(let arr of list) { minY = Math.min(minY, arr[0]); minX = Math.min(minX, arr[1]); } return list.map((arr)=> [arr[0]-minY,arr[1]-minX]); }; const BFS = (visit, table, y, x, N, stand) => { const q = []; const list = []; q.push([y,x]); visit[y][x] = true; while(q.le..

반응형