IT Study
-
[프로그래머스/JavaScript] 베스트앨범 (Feat. 첫 Lv3)IT Study/프로그래머스 2023. 11. 6. 14:49
초기 코드 function solution(genres, plays) { // 베스트 앨범에 들어갈 노래의 고유 번호를 저장하는 Array let answer = []; // 장르 별 총 재생 수를 나타내는 Map let genreTotalPlayMap = new Map(); for (let i = 0; i < genres.length; i++) { const genre = genres[i]; const play = plays[i]; if (genreTotalPlayMap.has(genre)) { genreTotalPlayMap.set(genre, genreTotalPlayMap.get(genre) + play); } else { genreTotalPlayMap.set(genre, play); } } /..
-
[코딩테스트 후기] 애플리케이션 보안 기업 `모니터랩` (Feat. 첫 코테)IT Study/FE 2023. 11. 6. 13:27
안녕하세요. 지난주 토요일 `모니터랩` 회사의 코딩테스트를 보고 온 Three입니다. 먼저, 코딩테스트에 대한 결과는 아래와 같습니다. 2/5 (5문제 중 2문제 정답) 48/100 (100점 만점 기준 48점, 코딩테스트 통과 기준 80점 이상) 참으로... 속상한 결과인데요. 코딩테스트를 위해 제가 앞으로 나아가야 할 방향에 대해 정리하고, 스스로에 다짐을 하고자 블로그 글을 작성합니다. 🧪 시험 방식 기업 `모니터랩`의 시험은 프로그래머스를 통해 진행하였습니다. 180분 (3시간) 기준으로 시험이 치러졌으며, 줌이나 화면에 대한 모니터링 없이 진행되는 듯하였습니다. 📄 문제 리뷰 1번 문제는 비교적 난이도가 낮은 문제였습니다. 그러나 문제를 꼼꼼히 읽지 않아 놓친 부분이 있었습니다. 여러 테스트 케..
-
[프로그래머스/JavaScript] 나머지가 1이 되는 수 찾기IT Study/프로그래머스 2023. 11. 2. 11:26
이 문제를 처음 봤을 때는 굉장히 쉽다고 생각했습니다. 그저 for문을 돌려 나머지가 1이 되는 수를 찾으면 되니까... 너무 쉽잖아?라고 생각했는데요. 그러나 이제는 시간복잡도를 고려해 코드를 작성해야겠다는 생각에 조금 더 고민하는 시간을 갖게 되었습니다. 🤔 생각의 흐름 (1) n을 x로 나눈 나머지가 1이 되도록 하는 가장 자연수를 찾기 위해 n % x === 1을 꼭 사용해야 할까? (2) 새로운 변수 m을 m = n - 1로 선언하고, 나머지가 0이 되는 가장 작은 자연수를 찾아보자. (3) for문으로 전체를 돌린다면 시간복잡도는 O(n)이 될 텐데... 어떻게 하면 시간복잡도를 줄일 수 있을까? (4) m이라는 수를 기준으로 중간 값, 혹은 제곱근 값 이하에서 찾으면 어떨까? 💻 결과 코드 ..
-
[프로그래머스/JavaScript] 달리기 경주 (Feat. 찾기 연산의 시간복잡도)IT Study/프로그래머스 2023. 10. 30. 12:27
☝🏻 1차 시도 function solution(players, callings) { let answer = [...players]; for(let i = 0; i < callings.length; i++) { const calling = callings[i]; const index = answer.indexOf(calling); const temp = answer[index - 1]; answer[index - 1] = answer[index]; answer[index] = temp; } return answer; } 🥚 중간 과정 function solution(players, callings) { let answer = [...players]; for(let calling of callings) {..
-
[프로그래머스/JavaScript] 주사위 게임 3 (Feat. Map)IT Study/프로그래머스 2023. 10. 11. 17:02
어우... 정말 어려웠는데요. 이 문제를 풀기 위해 찾았던 개념들에 대해 먼저 정리하고자 합니다. 1. JavaScript의 Map - 값을 저장(변경) : set(key, value) - key 존재 여부 확인 : has(key) - key에 해당하는 value 가져오기 : get(key) - size(크기) 확인 : size - map의 key, value 확인(사용) : forEach((value, key) => {}) 2. JavaScript의 배열 - 값 저장 : push(값) - 배열 중 최소 값 구하기 : Math.min(... 배열명) 3. 절댓값 구하기 - 절댓값 : Math.abs(숫자) 4. 제곱 구하기 - 제곱 : ** 초기 코드 function solution(a, b, c, d)..
-
[프로그래머스/JavaScript] 조건 문자열 (Feat. eval)IT Study/프로그래머스 2023. 10. 10. 21:07
기본 코드 function solution(ineq, eq, n, m) { var answer = 0; return answer; } 최종 코드 테스트 1 〉통과 (0.06ms, 33.4MB) 테스트 2 〉통과 (0.06ms, 33.4MB) 테스트 3 〉통과 (0.05ms, 33.6MB) 테스트 4 〉통과 (0.06ms, 33.4MB) 테스트 5 〉통과 (0.06ms, 33.4MB) ... 수식이 곧 문자열이라고 생각했는데, 잘못 생각한 듯하여 혹시 "문자열을 수식으로 바꾸는 함수가 있나?" 찾아봤습니다. eval 그러나 eval은 보안, 성능 저하, 명확하지 않은 코드의 의도들로 인해 사용을 지양한다고 합니다. function solution(ineq, eq, n, m) { // 결과를 담는 answe..
-
[프로그래머스/JavaScript] 문자열 겹쳐쓰기IT Study/프로그래머스 2023. 10. 10. 20:10
처음엔 split(), substr(), substring(), slice()와 같이 문자열을 자르는 메서드를 사용해야 할 것 같았습니다. 그러나, overwrite_string의 길이만큼 문자열이 대체되는 것이 아니라 방향을 바꾸어 진행했습니다. 기본 코드 function solution(my_string, overwrite_string, s) { var answer = ''; return answer; } 최종 코드 테스트 1 〉통과 (0.05ms, 33.7MB) 테스트 2 〉통과 (0.05ms, 33.4MB) 테스트 3 〉통과 (0.05ms, 33.4MB) 테스트 4 〉통과 (0.05ms, 33.4MB) ... 앞선 문제에서 다른 사람들이 풀이할 때에 사용한 join() 메서드를 처음 사용해본 것이..
-
[프로그래머스/JavaScript] 대소문자 바꿔서 출력하기IT Study/프로그래머스 2023. 10. 10. 19:14
일단 대소문자라고 하니, 영어 아스키코드를 다시 한번 보겠습니다. A ~ Z : 65 ~ 90 a ~ z : 97 ~ 122 자바스크립트에서 아스키코드와 관련있는 메서드에 대해 알아보죠. 문자 → 아스키 문자열.charCodeAt(인덱스) 문자열에서 인덱스에 해당하는 값을 아스키코드로 변환 아스키 → 문자 String.fromCharCode(아스키) 해당 아스키코드에 대해 문자로 변환 기본 코드 const readline = require('readline'); const rl = readline.createInterface({ input: process.stdin, output: process.stdout }); let input = []; rl.on('line', function (line) { in..