본문 바로가기

Algorithm

(8)
8. 청팀 / 백팀 (앨리스 코딩) 💫 문제 코더 랜드에서 체육 대회가 열렸습니다. 체육 대회는 청팀과 백팀, 두 팀으로 나누어 진행하였으며 종목은 축구, 줄다리기, 단체줄넘기, 이어달리기 4종목이 있었습니다. 점수는 종목별로 100점 만점으로 주어지며 총합산 점수가 높은 팀이 승리하였습니다. 청팀과 백팀의 점수가 주어졌을 때, 승리 팀의 점수를 출력하는 프로그램을 작성하세요. (동점일 때는 청팀의 총점을 출력하면 됩니다.) [입력] 첫 번째 줄에는 순서대로 청팀의 축구, 줄다리기, 단체줄넘기, 이어달리기 점수(정수형)를 공백으로 구분하여 입력합니다. 두 번째 줄에는 마찬가지로 순서대로 백팀의 축구, 줄다리기, 단체줄넘기, 이어달리기 점수(정수형)를 입력하고 위와 같이 공백으로 구분합니다. 모든 입력은 100이하의 음이아닌 정수 입니다. ..
7. 평균 구하기 💫 내가 작성한 코드 function solution(arr) { const addNum = arr.reduce( (accumulator, currentValue) => accumulator + currentValue, 0 ); const answer = addNum / arr.length; console.log(answer); return answer; } 💫 Review reduce.. 왤케 어려운거냐 너란녀석.. 이번 문제는 생각보다 쉽게 풀었다 알고리즘에 익숙해지는건가.. 끝 !
6. 자리 수 더하기 (LV.1) 💫 내가 작성한 코드 function solution(n) { let nums = []; do { nums.push(n%10); n = Math.floor(n/10); } while (n>0); const arr = nums; const answer = arr.reduce( (accumulator, currentValue) => accumulator + currentValue,0); return answer; } 💫 Review split 메서드 써서 배열 만들고 forEach 로 각각 인자 돌리면 쉽게 풀릴 것 같았지만, 1. split 메서드는 느리다고 한다. 2. reduce 메서드에 익숙해지고 싶었다 2가지 이유 때문에 위와 같이 코드를 작성했다. 💫 풀이 do...while문을 이용하여 배열 만..
5. 두 개 뽑아서 더하기 (LV.1) 이번엔 좀 오래걸렸다. 너무 어렵게 생각해서 문제 이해를 조합을 써야하는걸로 알았고, 덕분에 조합을 구현하는 알고리즘을 만들어보려고 한참 고생했다. 결국 실패.. 이 문제는 다른 사람의 풀이를 보았고 답을 본 순간 너무 허무했다. 중첩 for문을 쓰면 되는거였어 .. 😂 💫 내가 짜려했던 조합 알고리즘과 그 답 const getCombinations = (array, selectNumber) => { const results = []; if(selectNumber === 1){ return array.map((element) => [element]); } array.forEach((fixed, index, origin) => { const rest = origin.slice(index+1); const ..
4. 서울에서 김서방 찾기 (LV.1) 💫 내가 작성한 코드 function solution(seoul) { let answer = ""; const result = seoul.indexOf("Kim"); answer = `김서방은 ${result}에 있다`; return answer; } 💫 Review 1. indexOf() string.indexOf ( searchValue, start ) : 검색할 문자가 처음 나타나는 위치값 or 검색할 문자가 없으면 -1 반환 searchValue : 검색할 문자 (필수) start : 문자열에서 검색을 시작할 위치 (선택)
3. 핸드폰 번호 가리기 (LV.1) 💫 내가 작성한 코드 function solution(phone_number) { const str = phone_number.toString(10).split(""); const arr1 = str.slice(0,-4); const arr2 = str.slice(-4); return arr1.map(ele => { let result = ele.replace(ele, "*"); return result; }) .concat(arr2).join(""); } 💫 review 1. 다른 사람이 푼 방법 function solution(phone_number) { let result = "*".repeat(phone_number.length - 4) + phone_number.slice(-4); return ..
2. 이상한 글자 만들기 (LV.1) 💨 내가 작성한 코드 function solution(s) { const str = s.split(" "); return str .map((ele) => { let result = ""; ele.split("").forEach((value, index) => { if (index % 2 === 0) { result += value.toUpperCase(); } else { result += value.toLowerCase(); } }); return result; console.log(result); }) .join(" "); } ✅ 새롭게 알게된 것 map vs. forEach map : 동일한 사이즈의 새로운 배열을 반환. forEach : 기존 배열에 업데이트. 즉, map을 이용하면 원본을 건드리..
1. 자연수 뒤집어 배열로 만들기( LV.1 ) 💨 나의 풀이 function solution(n) { const str = String(n).split(""); console.log(str); const reverseAnswer = str.reverse(); console.log(reverseAnswer); function returnInt(element) { return parseInt(element, 10); } return reverseAnswer.map(returnInt); } console.log(solution(7582058)); ✅ 더 나아질 수 있는 부분 1. 변수로 선언하는 것 줄이기 String(n).split("").reverse() 이렇게 이어써도 됨. 2. 리팩토링 function solution(n) { return Stri..