프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 나의 풀이 처음에는 완전 접근을 잘못했다. 처음 풀었을 때 생각의 흐름 1. dirs길이가 짧고 반복문의 깊이가 깊을 것 같지 않아 forEach를 사용해도 되겠다고 판단했다. 2. 따라서 string을 스프레드 연산자를 통해 배열로 만들고 forEach로 순회하면서 좌표를 저장해야겠다. 3. 좌표는 도착지점만 저장하고 중복이 있으면 안되니 new Set을 사용해서 저장해야겠다. 4. 경계지점 넘어가는 것은 if문을 통해서 제어해야겠다. 5. 이 문제에서 모든 데이터는 string이나 array 보다 obje..
분류 전체보기
프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 나의 풀이 프로그래머스에서는 해당 문제를 자바스크립트로 풀 수 없다. 그래서 vscode에서 자바스크립트로 풀고 파이썬으로 코드를 변경하였다. DP를 방금 공부해서 어떻게 풀어야겠다는 바로 생각이났는데 코드로 표현하는데 시간이 걸렸다. DP를 모르시면 참고! Dynamic Programming (DP) 땅따먹기 문제를 풀고 있는데 2시간동안 생각을 하는데 도저히 안 풀렸다. 계속 시간초과가 나서 이것저것 시도 해보다가 힌트라도 보자해서 봤던게 바로 DP였습니다. 그럼 DP는 과연 무엇일까? D html-jc...
땅따먹기 문제를 풀고 있는데 2시간동안 생각을 하는데 도저히 안 풀렸다. 계속 시간초과가 나서 이것저것 시도 해보다가 힌트라도 보자해서 봤던게 바로 DP였습니다. 그럼 DP는 과연 무엇일까? Dynamic Programming (동적 계획법) DP 뭔가 어려워보이는데 그냥 "기억하면서 문제 풀기"라고 생각하면 편합니다. 이게 뭔말이지 싶겠지만 5분만 참고 글을 읽으면 바로 이해 가능합니다. 예제는 직접 눈으로 보고 느끼면 이해가 더 쉽기에 간단한 예제를 가져와봤습니다. 바로 `피보나치 수열`입니다. 더보기 피보나치 수열 : 앞 두 개의 항목의 합이 그 다음 항목의 값이 되는 수열을 의미한다. const fib = (n) => { if (n { if (n in memo) return memo[n]; if (n
프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 나의 풀이 틀린 풀이 1 function solution(number, limit, power) { let result = 0 const box = [] for(let i = 1; i{ if(cur > limit){ acc += power }else{ acc += cur } return acc },0) } function getDivisor(number){ const divisor = [] for(let i = 1; i
프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 나의 풀이 미리 생각해둔 것 // 예외 처리 1. 같은 발음이 연속으로 있을 때 하지만 연속이 아니면 괜찮 2. 불가능한 발음이 포함되어있을 때 ex) "woowo" 풀이 순서 1. 연속으로 하는 옹알이가 있으면 제외시키기 2. 발음가능한 옹알이는 전부 공백으로 교체 3. 공백자체는 length가 0이기 때문에 모두 공백으로 교체되면 옹알이가 가능하고 하나라도 공백으로 교체되지 않으면 옹알이 불가능 function solution(babbling) { let result = 0 const babblArr = ..
프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 나의 풀이 시간 복잡도 계산이랑 설계를 잘 못했다. 그리고 문제이해를 잘 못했다. 상수의 앞에 아래서부터 위로 쌓이게 된다!! 정해신 순서로 쌓인 햄버거만 포장을 한다!! 즉 재료가 빵야채빵고기빵 이렇게 쌓이면 햄버거를 만들지 못한다. 실수 포인트 1 나는 배열중에서 순서만 맞으면 중간에 무엇이 있어도 상관 안 했다. 실수 포인트 2 여기서 2중 for문을 쓰면 안되는데 썼다 why? 문제이해를 똑바로 못해서 이걸 쌓이는 도중에 햄버거를 만들어야하는데 다 쌓고 햄버거를 만들려고 해서 코드 설계 자체가 틀렸다...
프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 나의 풀이 쉬운줄 알고 바로 풀었는데 계속 시간초과가 났다. 시간복잡도를 고려를 더 하고나서 풀자! 틀린 풀이 1 function solution(players, callings) { let newPlayers = [...players] for(let i = 0; i < callings.length; i++) { const tem = newPlayers.indexOf(callings[i]) newPlayers = [...newPlayers.slice(0,tem), ...newPlayers.splice(tem+..
📚 시리즈 목차 1. 컴퓨팅 사고 2. C언어 3. 배열 4. 알고리즘 5. 메모리 6. 자료구조 6. 자료구조 2) 배열의 크기 조정하기 배열 이미 만들었는데 크기를 변경하려고 한다면 어떻게해야할까? 안전하게 하려면 새로운 공간에 큰 크기의 메모리를 다시 할당하고 기존 배열의 값을을 하나씩 옮겨줘야한다. 왜 이미 할당된 메모리의 크기를 바로 조절을 못하고 임시 메모리를 새로 할당한 뒤 작업을 해줘야할까? 이미 할당된 메모리 옆에는 다른 값이 저장되어있어 메모리를 연속적으로 사용할 수 없기 때문에 조절하고자 하는 크기로 임시 메모리를 새로 할당하여 기존의 값을 그대로 옮겨주고 추가로 할당한 메모리에 새로운 값을 추가 할 수 있다. 쉽게말해 메모리를 사물함이라고 한다면 사용할 사물함의 개수를 한 번 정한..
프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 나의 풀이 먼저 처음 풀었던 코드이다. 틀린 코드 테스트케이스는 통과하지만 허점이 있다. 일단 가독성이 최악이고 처음 deliveries 배열의 끝에 원소가 0이면 잘못된 답이 출력된다. 그리고 시간초과도 떠서 이렇게 if문으로 풀 수도 있겠지만 엄청 꼼꼼하게 풀어야 하고 실수를 하면 안 된다. 이렇게 푼다고 할지라도 나중에 유지보수가 너무 힘들것 같아서 처음부터 다시 풀기로 하였다. function solution(cap, n, deliveries, pickups) { const saveCap = cap l..