Today I Learned Programmers 문제 풀기 기술면접 스터디 Programmers 문제 풀기 직사각형 넓이 구하기 나의 풀이 function solution(dots) { let xDots = []; let yDots = []; dots.forEach((v) => { xDots.push(v[0]); yDots.push(v[1]); }); return Math.abs(Math.max(...xDots) - Math.min(...xDots)) * Math.abs(Math.max(...yDots) - Math.min(...yDots)); } x와 y 좌표를 배열로 따로 만든 후에 각 배열의 최솟값, 최댓값을 이용해 직사각형의 넓이를 구한다. 다른 사람들 풀이 보니까 다들 비슷하게 풀었는데 내 답..
Today I Learned Programmers 문제 풀기 기술면접 스터디 Programmers 문제 풀기 외계어 사전 나의 풀이 function solution(spell, dic) { return dic.filter((str) => str.split("").sort().join("") === spell.sort().join("")).length > 0 ? 1 : 2; } dic 배열을 filter를 돌려서 각 문자열 요소를 배열로 만든 후 sort, join한 문자열이 spell을 sort, join한 문자열과 일치한 것만 필터링한다. filter한 배열의 length가 0 이상이라면(spell에 담긴 알파벳을 한번씩만 모두 사용한 단어가 dic이 있다면) 1을 반환하고 아니면 2를 반환한다. +)..
Today I Learned Programmers 문제 풀기 기술면접 스터디 원티드 프리온보 프론트엔드 챌린지 강의 수강 Programmers 문제 풀기 잘라서 배열로 저장하기 나의 풀이 function solution(my_str, n) { let count = 0; let answer = []; while ( count < Math.ceil(my_str.length/n)) { answer.push(my_str.slice(count*n,(count*n)+n)) count++ } return answer; } while문도 한 번 써보고 싶어서 for문이 아닌 while문을 이용해서 풀었다. my_str 문자열을 n으로 나누고 while문을 돌면서 문자열을 slice한 후에 배열에 push한다. 다른 사..
Today I Learned Programmers 문제 풀기 기술면접 답변 정리 Programmers 문제 풀기 공 던지기 나의 풀이 function solution(numbers, k) { let answer = (2*k-1) % numbers.length; return answer === 0 ? numbers.length : answer; } 처음에는 뭔가 for문을 써야 하나 고민했지만 문제를 테스트 케이스를 직접 손으로 써보며 풀어보니 패턴이 보였다. 그래서 처음에는 (2*k-1) % numbers.length로 답을 써서 제출했는데 케이스 2개가 통과되지 않아서 고민했는데 (2*k-1) % numbers.length의 값이 0이 나올 때 예외처리를 추가해 주니 해결되었다. 다른 사람의 풀이 fu..
Today I Learend Programmers 문제 풀기 기술면접 답변 정리 Programmers 문제 풀기 진료순서 정하기 나의 풀이 function solution(emergency) { let array = [...emergency].sort((a,b) => b - a) return emergency.map((v) => array.indexOf(v) + 1); } sort 메서드를 이용해서 emergency를 내림차순으로 (응급 순서가 높은 순으로) 정렬한 배열을 만든다. 그리고 기존 emergency 배열에 map을 돌리는데 이때 내림차순으로 정렬한 배열 array에서 해당 요소를 찾아 index+1을 출력한다. 다른 사람들 풀이 보니 다들 비슷하게 푼 거 같다! 한 번만 등장한 문자 나의 풀..
Today I Learned Programmers 문제 풀기 기술면접 스터디 기술면접 답변 준비 Programmers 문제 풀기 가까운 수 나의 풀이 function solution(array, n) { let array2 = array.sort((a,b) => a-b).map((num) => Math.abs(n-num)) let index = array2.indexOf(Math.min(...array2)) return array[index] } 처음에는 sort를 사용하지 않고 그냥 map만 돌려서 n-num을 한 절댓값으로 배열을 가공한 후에 해당 배열에서 최솟값을 가진 index를 찾아서 문제를 풀었다. 그런데 이렇게 했을 때 "가장 가까운 수가 여러 개일 경우 더 작은 수를 return합니다."라..
Today I Learned Programmers 문제 풀기 기술면접 스터디 Programmers 문제 풀기 팩토리얼 나의 풀이 function solution(n) { let answer = 1; for ( i = 2; i n ) { return i - 1 } } } for문을 사용했는데 조건문을 뭘로 설정해야 할지 모르겠어서 저번에 찾아봤던 Number.MAX_SAFE_INTEGER (최대 정수값)을 사용했다. for문을 돌리면서 answer에 i를 계속해서 곱하고 if문 조건을 충족하면 값을 반환한다. 다른 사람의 풀이 function solution(n) { var answer = 1 var a = 0 while(answer
Today I Learned Programmers 문제 풀기 기술면접 스터디 Programmers 문제 풀기 A로 B 만들기 나의 풀이 function solution(before, after) { return before.split("").sort().join("") === after.split("").sort().join("") ? 1 : 0; } 처음엔 배열에 map을 돌려서 해야 하나 고민하다가 갑자기 sort가 생각나서 sort한 배열이 같은지를 비교해서 풀려고 했는데 배열에는 비교 연산자가 적용되지 않는 건지 문제가 풀리지 않았다. 그래서 sort한 후에 join 메서드로 문자열 만들었을 때 두 문자열이 동일한지를 이용해서 풀었다. 배열의 동등 비교 const a = [1, 2, 3]; con..
Today I Learned Programmers 문제 풀기 기술면접 스터디 Programmers 문제 풀기 배열 회전시키기 나의 풀이 function solution(numbers, direction) { if ( direction === "right" ) { let right = numbers[numbers.length - 1] numbers.splice(numbers.length - 1, 1); numbers.unshift(right) } else { let left = numbers[0] numbers.splice(0, 1); numbers.push(left) } return numbers; } 왼쪽, 오른쪽 경우를 나눠서 splice 메서드로 배열을 자른 후에 오른쪽인 경우는 unshift 메서..
Today I Learned Programmers 문제 풀기 스파르타 기술면접 스터디 시작 Programmers 문제 풀기 중복된 문자 제거 나의 풀이 function solution(my_string) { let answer = ""; my_string.split("").forEach((item) => answer.includes(item) ? null : answer += item) return answer; } my_string을 배열로 만든 후 foreach문을 돌려서 answr.includes(item)이라면 즉, 중복된 문자열이라면 넘어가고 false가 출력될 때만 answer에 문자열을 추가하도록 했다. 다른 사람의 풀이 01 function solution(my_string) { retur..