본문 바로가기

반응형

전체 글

(149)
[프로그래머스-Level1] 핸드폰 번호 가리기 let phone_number = "027778888"; function solution(phone_number) { let answer = ''; for (let i = 0; i < phone_number.length - 4; i++) { answer += '*'; } answer += phone_number.slice(-4); return answer; } console.log(solution(phone_number));
[프로그래머스-Level1] 체육복 1. 첫번째 코드 - map 함수를 이용하여 element를 리스트에서 바로 지울 때 해당 리스트에 바로 적용이 되어 element를 순차적으로 돌지 못하는 문제가 있었다. 그래서 copyLost 리스트를 따로 만듬. let n = 5; const lost = [1, 2, 3]; const reserve = [1, 2, 3]; function solution(n, lost, reserve) { let answer = n - lost.length; lost.sort(); reserve.sort(); // 여벌 체육복을 가져온 학생이 체육복을 도난 당했는지 확인 const copyLost = []; lost.map((element, index) => { if (reserve.includes(element))..
[프로그래머스-Level1] 두 정수 사이의 합 function solution(a, b) { let minNum = a; let maxNum = b; if (a > b) { minNum = b; maxNum = a; } let answer = 0; for (let i = 0; i
[프로그래머스-Level1] 완주하지 못한 선수 1. 첫번째 코드 : 효율성 테스트에서 통과하지 못함 - 정확성 테스트는 통과 했으나 효율성 테스트에서 통과하지 못함 - participant에 completion element가 존재하는지 확인 한 후 participant에서 제거하는 로직이 이중for문 효과를 주어서 효율적으로 작동하지 않은 듯 싶다 function solution(participant, completion) { let answer = ''; completion.map(comElement => { if (participant.includes(comElement)) { participant.splice(participant.indexOf(comElement), 1); } }); answer = participant.join(''); r..
[프로그래머스-Level1] 시저암호 let s = "Aa Zz"; let n = 1; function solution(s, n) { let answer = ''; let str = s.split(''); let charCode; str.map(element => { // check z or Z charCode = element.charCodeAt(0); if ((charCode >= 97 && charCode 122) || (charCode >= 65 && charCode 90)) { charCode -= 26; } if (charCode === 32) { answer += String.fromCharCode(charCode); } else { answer += String.fromCharCode(charCode+n); } }) retur..
[프로그래머스-Level2] 다리를 지나는 트럭 let bridge_length = 100; let weight = 100; let truck_weights = [10,10,10,10,10,10,10,10,10,10]; function solution(bridge_length, weight, truck_weights) { let answer = 0; // 경과시간 const currentBridge = []; // 현재 다리 상태 let currentWeight = 0; // 현재 다리 무게 let currentTruck = 0; // 현재 다리에 있는 트럭 // 다리길이 만큼 현재 다리 상태 0으로 채워서 초기화 for (let i = 0; i < bridge_length; i++) { currentBridge.push(0); } // 다리 초기화 ..
[프로그래머스-Level2] 기능개발 let progresses = [93,30,55,55]; let speeds = [1,30,5,5]; function solution(progresses, speeds) { let answer = []; let releaseDays = progresses.map((element, index) => { return Math.ceil((100 - element) / speeds[index]); }); // 큰 숫자가 나오기 전까지 +1을 계속 한다 // 큰 숫자가 나오면 answer에 push하고, temp를 큰 숫자로 변경하고, cnt를 1으로 변경한다 () let cnt = 0; let temp = releaseDays[0]; releaseDays.map((element, index) => { if (t..
04. 해쉬 테이블 (Hash Table) 1. 해쉬테이블 구조 - 키(key)에 데이터(value)를 저장하는 데이터 구조 - key를 통해 데이터를 받아올 수 있으므로 속도가 획기적으로 빨라짐 - 보통 배열로 미리 Hash Table 사이즈 만큼 생성 후 사용 - 데이터 저장/읽기 속도가 빨라 검색 속도가 빠르다는 장점이 있음 - 일반적으로 저장공간이 더 필요하며 여러 키에 해당하는 주소가 동일 할 경우 충돌을 해결하기 위해 별도 자료구조가 필요한 단점이 있음 키 (key) - 고유한 값으로 해시 함수의 input - 다양한 길이의 값이 될 수 있으며 이 상태로 최종 저장소에 저장이 되면 다양한 길이 만큼의 저장소를 구성해야 하기 때문에 해시 함수로 값을 바꾸어 저장함 해쉬 함수 (Hash Function) - 키(key)를 해시(Hash)로..