본문 바로가기

알고리즘/Programmers79

[TIL] 2023.04.02 Programmers 문제 풀기 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.. 2023. 4. 2.
[TIL] 2023.04.01 Programmers 문제 풀기 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을 출력한다. 다른 사람들 풀이 보니 다들 비슷하게 푼 거 같다! 한 번만 등장한 문자 나의 풀.. 2023. 4. 2.
[TIL] 2023.03.31 기술면접 스터디, Programmers 문제 풀기 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합니다."라.. 2023. 3. 31.
[TIL] 2023.03.30 기술면접 스터디, Programmers 문제 풀기 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 2023. 3. 30.
[TIL] 2023.03.29 기술면접 스터디, Programmers 문제 풀기 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.. 2023. 3. 29.
[TIL] 2023.03.28 기술면접 스터디, Programmers 문제 풀기 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 메서.. 2023. 3. 29.
[TIL] 2023.03.27 기술면접 스터디, Programmers 문제 풀기 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.. 2023. 3. 27.
[TIL] 2023.03.26 Programmers 문제 풀기 Today I Learned Programmers 문제 풀기 이력서 넣기 Programmers 문제 풀기 인덱스 바꾸기 나의 풀이 function solution(my_string, num1, num2) { return my_string .split("") .map((str, i) => i === num1 ? str = my_string[num2] : i === num2 ? str = my_string[num1] : str ).join(""); } my_string을 배열로 만든 후에 map을 돌려서 인덱스에 따라 삼항연산자로 처리했다. 다른 사람의 풀이 function solution(my_string, num1, num2) { my_string = my_string.split(''); [my_stri.. 2023. 3. 26.
[TIL] 2023.03.25 Programmers 문제 풀기 Today I Learned Programmers 문제 풀기 Programmers 문제 풀기 최댓값 만들기 (2) 나의 풀이 function solution(numbers) { let answer = 0; for ( i = 0; i = answer ) { answer = numbers[i] * numbers[j] } } } return answer; } 처음에 answer에 0을 할당하고 시작했더니 원소 두 개를 곱했을 때의 최댓값이 0 이하인 경우의 테스트케이스를 통과하지 못했기 때문에 answer에 0 말고 뭔.. 2023. 3. 26.
[TIL] 2023.03.24 Programmers 문제 풀기 Today I Learend Programmers 문제 풀기 내일배움캠프 오프라인 모각지! Programmers 문제 풀기 문자열 내림차순으로 배치하기 나의 풀이 function solution(s) { let upperCase = []; let lowerCase = []; s.split("").forEach((str) => str !== str.toUpperCase() ? lowerCase.push(str) : upperCase.push(str)) return lowerCase.sort().reverse().join("") + upperCase.sort().reverse().join(""); } 대문자인 경우와 소문자인 경우로 나눠서 배열에 push한 후에 sort, reverse 메서드와 join메서.. 2023. 3. 24.