[내가 푼 풀이] function solution(s) { if(!s.includes('-')){ s = Math.floor(Math.random() * 10000); return Number(s); } else { s = Math.floor(Math.random() * s.length); return Number(s); } } 그냥.. 바보다.. 너무 어렵게 생각했다.. 1. 부호를 포함했는지 안했는지에 따라서 이것저것 해보려고 했는데 어처피 "-1234"를 숫자형으로 변환하면 부호에 상관없이 그냥 -1234가 반환된다. 2. Math.random을 사용하면 정해진 값이 아닌 계속 변하는 값이 반환됨 +[리더님의 조언] 코딩테스트의 문제에서 Math.random은 거의 쓸 일이 없음 입력값과 결과값이 ..
코딩 테스트/Programmers - 1
[처음 푼 풀이] function solution(numbers) { for(let i = 0; i < 100; i++){ const randomNum1 = numbers[i]; const randomNum2 = numbers[i]; let newNum = []; newNum += (randomNum1 + randomNum2); const arrNum = newNum.split(); const result = arrNum.sort(); return result; } } 1. 여기서 랜덤한 수를 뽑기 위해서 randomNum을 1, 2 나눠서 변수로 담았음 2. 생각해보니 무작위로 뽑은 수를 모두 numbers[i]로 설정하면 같은 위치에 있는 것이 뽑힐 수도 있기 때문에 잘못되었음 3. 그래서 for 문..
[처음 푼 풀이] function solution(strings, n) { for (let i = 0; i < strings.length; i++) { let arr = []; arr += strings[n][i].split(); const result = arr.sort(); return result; } } 이번 문제는 생각하는데에 오랜 시간이 걸렸다. 인덱스값을 뽑아서 배열을 만들고 그에 일치하는 단어를 위치에 맞게 다시 정렬해야 하는데.. 생각이 복잡했다. 위의 풀이를 순서대로 풀자면, 1. arr 배열을 담을 변수를 만들고, 2. 빈 배열에 strings[n][i] 로 문자열을 반환받았다. 3. (2)번을 배열에 다시 담아주기 위해 split()을 이용했는데 → 이 때 드는 의문점 : split..
function solution(n) { const result = ""; const str = n.slice(0, n.length-1); return result = str; } 1. 계속 값이 undefined 가 나옴.. (왜 그러겠니....) 2. 문자열을 넣구 잘라야지.. 문자열도 없는데 자른다고 값이 나오겠냐고😭 3. 이때까지 풀었던 문제들이 대략 n 값을 받아 쓰다보니.. 또 그런 줄 알았음 [구글링+재풀이] function solution(n) { return "수박".repeat(n).substring(0, n); } 이렇게 한 줄이면 뚝딱 끝나는 코드를.. 1. "수박" 이라는 문자열을 n번 repeat 해주고 그것을 인덱스0(시작) ~ 인덱스n 이전 문자까지 잘라줌 만약, n이 3이라..
[풀이] function solution(seoul) { const kimIdx = seoul.indexOf("Kim"); return `김서방은 ${kimIdx}에 있다`; } 1. "Kim"의 인덱스 값을 알아야 했음! 2. 처음엔 for ... of / for ... in 이 떠올랐지만 이것은 특정 문자열의 인덱스값을 구할 수 없음! 3. 구글링 + 노션에 정리했던 내용을 밑바탕으로, 문자열의 인덱스 값을 받아오는 indexOf() 발견 4. 이번주부터 변수명을 적절하게 짓기 노력하기 위해.. "Kim"의 index 값의 의미로 kimIdx 라는 변수명 사용 이번 문제는 내가 풀기에 아주 쉬운 문제였음 문제만 읽었을 때 지레 겁부터 먹었지만.. 자세히 들여다보면 어려울 것이 없었다. 정리 사용 메서..
[풀이] function solution(n) { const ternary = n.toString(3); const reversed = ternary.split("").reverse().join(""); const answer = parseInt(reversed, 3); return answer; } 1. 구글의 도움을 받아 진수 변환법을 익히고 문자열을 뒤집어주면 간단한 문제였음! (생각보다 쉽게 풀려서 당황) 2. 먼저 10진수를 3진수로 변환해야 하므로 toString() 이용해 변환 3. 이 때, 문자열 뒤집기가 중요! - '배열' 뒤집기는 arr.reverse()로 뒤집어줌 - '문자열' 뒤집기는 split('') 통해 문자를 하나씩 잘라 '배열'에 넣어줌 - reverse()로 '배열'을 뒤집..
[처음 푼 풀이] function solution(s) { const strCount = s.length; if(strCount % 2 === 0){ s.substr(i,2) } else{ s.substr(i,1) } } 1. 노트에 끄적일 때 홀수는 s.substr(i ,2) 짝수는 s.substr(i, 1) 규칙 찾음 2. 근데 앞에 i 는 어떻게 설정 ???? (너무 어렵고 직관적으로 생각함) [두번째 풀이] function solution(s) { const answer = ""; if (s.length % 2 === 0) { answer = s[s.length / 2 - 1] + s[s.length / 2]; } else { answer = s[Math.floor(s.length / 2)]; }..
[ 내가 푼 풀이 ] //제일 처음 혼자 풀었던 풀이 function solution(s) { let yCount = s.match(/y/gi).length; let pCount = s.match(/p/gi).length; if (yCount == pCount) { true; } else { false; } } 1. 대소문자 구분 없게 하기 위해 //gi를 써서 넣음 2. if 문 까지는 어찌저찌 성공, 하지만 p, y 가 없을 땐 도대체 어떻게 해야되지? 라는 고민의 굴레에 빠짐 3. 구글의 도움을 받은 아래가 2번째 풀이 function solution(s) { let str = s.toUpperCase(); let count = 0; for (let i = 0; i < s.length; i++) {..