분류 전체보기
-
[프로그래머스/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..
-
[프로그래머스/JavaScript] 문자열 반복해서 출력하기IT Study/프로그래머스 2023. 10. 10. 18:20
자바스크립트(NodeJS)에서 이제 입력을 받아 출력하는 것은 아주 ⭐️ 조금 ⭐️ 익숙해진 것 같습니다. 위 문제에 접근해보겠습니다. 초기 코드 const readline = require('readline'); const rl = readline.createInterface({ input: process.stdin, output: process.stdout }); let input = []; rl.on('line', function (line) { input = line.split(' '); }).on('close', function () { str = input[0]; n = Number(input[1]); }); 중간 과정 (실패 1) 줄바꿈이 추가되지 않아 str이 그대로 이어져서 출력됩니다. ..
-
[프로그래머스/JavaScript] 문자열 출력하기 (Feat. 기초 트레이닝)IT Study/프로그래머스 2023. 10. 10. 17:59
초기 코드 const readline = require('readline'); const rl = readline.createInterface({ input: process.stdin, output: process.stdout }); let input = []; rl.on('line', function (line) { input = [line]; }).on('close',function(){ str = input[0]; }); 완성 코드 (기존 코드에 console.log(str);만 추가) // readline(콘솔에서 사용자 입력 읽기) 모듈 불러오기 const readline = require('readline'); // readline 모듈을 사용해 인터페이스를 생성 const rl = readl..