본문 바로가기

코테

[프로그래머스]키패드 누르기 - javascript 레벨 1이라고 우습게 봤다가 감을 못잡았었는데, 풀이를 보고 나니 쉽게 이해가 되네요. 다시 풀면 잘 풀 수 있을것 같습니다. function solution(numbers, hand) { var answer = ''; const key = { //키패드 위치 수치화 1: [0,3], 2:[1,3], 3:[2,3], 4: [0,2], 5:[1,2], 6:[2,2], 7: [0,1], 8:[1,1], 9:[2,1], '*': [0,0], 0:[1,0], '#':[2,0] } const len = numbers.length; // 현재 키 위치 let handL = '*'; let handR = '#'; for(let i=0;i 더보기
[프로그래머스]신규아이디 -javascript function solution(new_id) { let answer = new_id .toLowerCase() .replace(/[^a-z0-9-_.]/g, '') .replace(/[.]{2,}/g,'.') .replace(/^\.|\.$/g,'') .replace(/^$/,'a') .slice(0,15).replace(/\.$/,''); if(answer.length 더보기
[프로그래머스]로또의 최고 순위와 최저 순위 - javascript 문제는 이미 알고서 답이 궁금해서 오셨을것 같으므로 풀이만 합니다. function solution(lottos, win_nums) { var answer = []; const rank = { //순위 넣을 객체 생성 6: 1, 5: 2, 4: 3, 3: 4, 2: 5, 1: 6, 0: 6 } let max = 0; // 최대값 let min = 0; // 최소값 for(let i of lottos){ if(win_nums.includes(i)) { //당첨번호와 일치한다면 카운트 max++; min++; } else if(i===0) { //최대값은 모두 맞았다는 가정하에 전부 카운트 max++; } } answer.push(rank[max], rank[min]); //맞은 갯수에 따라 등수 산정 re.. 더보기
[프로그래머스]여행경로 - javascript 구글링 검색 검색 후 해석. 알고나면 참 아무것도 아닌데 아직은 어렵네요. function solution(tickets) { let routes = []; function DFS(extra, current, route){ // extra(잔여티켓): [["ICN", "JFK"], ["HND", "IAD"], ["JFK", "HND"]] // current(현재위치): "ICN" // route(여행경로): ["ICN"] if (extra.length === 0) { routes.push(route); //잔여티켓 연산이 끝나면 routes로 정보전송 } //티켓 모두 사용 else { extra.forEach(([s, e], index) => { //s: 출발, e: 목적지 //index: 인덱스번호 .. 더보기
[프로그래머스]단어변환 - javascript 예시 ㅇㅇ 첫번째 시도 왜 자꾸 틀린값이 나올까 궁금했는데 값을 확인해보니 레벨값을 안정해줘서 무조건 카운트 하는거였네요. function solution(begin, target, words) { var answer = 0; // 카운트 let ch = []; //방문여부 let queue = []; if(!words.includes(target)) return 0; queue.push(begin); while(queue.length){ let v = queue.shift(); let len = queue.length; if(v===target) return answer; words.forEach(word => { let notEqual = 0; if(ch.includes(word)) return; f.. 더보기
[프로그래머스]네트워크 javascript 그림을 안보고 문제를 풀려고 했어서 이해하는데 괜한 시간을 허비했다. 사실 알고보면 정말 간단한 문제인데... 입출력 예 n computers return(answer) 3 [[1, 1, 0], [1, 1, 0], [0, 0, 1]] 1 3 [[1, 1, 0], [1, 1, 1], [0, 1, 1]] 2 왜 이게 1개야, 이건 왜 2개야 로 한참 헤맸다. 그림 보자마자 아... 1개 맞네, 2개 맞네가 되었다. 풀이 우선 한번 지나간 길은 또 지나가지 말자는 차원에서 ch 배열을 만들었고, 모두 0(false)로 정했다. 그리고 맨 아래 for문으로 해당 영역이 지나간적 없는지 확인하고, DFS를 실행시킨다. DFS가 실행되면 해당 영역은 check 하고(1로 변환), 연결된 경로가 있는지 확인한다. 만.. 더보기
[LeetCode]20. Valid Parentheses 올바른 괄호를 썼는지 판별하는 문제입니다. 전에 풀어봤던건 단순 괄호 열리고 닫히는거였는데 이건 좀 더 복잡하네요. Input/Output dd Input Output () true ()[]{} true (] false ([)] false {[]} true 시도(성공) 각 괄호 시작값에 따라 적절한 값이 나오도록 객체화 했습니다. 값이 쌓일수있도록 빈 스택을 만들고, 현재값이 객체의 값이랑 일치할때마다 스택이 한글자씩 지워지도록 구성했습니다. 이렇게 처리가 전부 끝났는데도 스택값이 남아있을경우 false, 0이면 true를 반환합니다. /** * @param {string} s * @return {boolean} */ var isValid = function(s) { // s='[}'; const par.. 더보기
[LeetCode]14. Longest Common Prefix - javascript 예시 Input Output ["flower", "flow", "flight"] "fl" ["dog", "racecar", "car"] "" 시도(성공) 한글자씩 쪼개서 배열속 문자들을 확인한후 같으면 계속 진행하고, 하나라도 안맞는게 생기면 딱 잘라버리는겁니다. /** * @param {string[]} strs * @return {string} */ var longestCommonPrefix = function(strs) { let first = strs[0], //flower fLen = first.length; //6 // console.log(first, fLen); for(let i=0;i 더보기