본문 바로가기

Algorithm & World Class

(39)
프로그래머스 - 스킬체크 LV2. 대회 횟수 구하기 안타깝지만 아래의 코드는 완전하게 통과된 코드가 아니다.... T . T function solution(N, a, b) { let answer = N / 2; //처음에 참가자수를 2로 나누고 시작한다. let count = 1; //몇회인지 계산한다. while(true) { // N이 2의 몇승인지 지수를 구한다. answer = answer / 2; count++; if(answer === 1) break; } if(N / 2 >= a && N / 2 >= b || N / 2 < a && N / 2 < b ) { // 중간점을 기준으로 같은쪽이면 count - 1회에 만난다. answer = count - 1; } else { // 중간점을 기준으로 다른쪽이면 count 회에 만난다. answer..
(테크핀 코딩 테스트) 친구의 수학 숙제를 도와주자 친구의 수학 숙제를 도와주자 문제 설명 한돌이의 친구는 더하기를 잘 못합니다. 안타까웠던 한돌이는 친구의 수학 숙제를 도와주기로 약속하였고, 친구는 수학 숙제를 string형태로 반환하는 함수를 작성해서 한돌이에게 전달해주었습니다. 자, 이제 친구의 수학 문제를 풀어 주세요. 제한사항 N은 10 이하의 자연수입니다. mathQuiz는 수학 문제를 string 형태로 반환합니다. mathQuiz는 + 연산만 반환합니다. mathQuiz는 N개의 덧셈 연산만 반환합니다. 입출력 예 mathQuzi return value result "1+1=" 2 "1+2+3=" 6 "10+10=" 10 mine function solution(mathQuiz) { let quiz = mathQuiz.split(""); l..
(프로그래머스) 코딩테스트 해시 LV.1 완주하지 못한 선수 HA1 불합격 후 주말동안 너무 화도 나고 결과에 대해 재검토도 요청하고 싶었다. 코플릿은 만점 리액트 과제는 14개중 5개만 통과했으나 페이지를 렌더링하면 요구한 기능은 모두 구현했다. (종합적인 심사를 했다고는 하지만 페이지는 실제로 보지 않았을 것으로 짐작) 사실 수준 낮은 내용의 섹션1을 다시 보고 싶지 않다. (그 수준 낮은 내용들을 테스트 기준에 맞춰서 작성을 못했다. OTL) 그래서 나의 강점은 더욱 뽀족하게 다듬고 놓치고 있는 부분들을 찾아내고 그것들을 보완하는 시간을 가지려고 한다. 그래서 프로그래머스를 통해 알고리즘 실력을 높이고 자료구조에 대해 공부하려고 한다. 정확성과 효율성을 모두 통과한 코드 function solution(participant, completion) { var ..
(좋은 코드의 작성을 위해) insertDash insertDash 문제 문자열을 입력받아 연속된 한자리 홀수 숫자 사이에 '-'를 추가한 문자열을 리턴해야 합니다. 입력 인자 1 : str string 타입의 숫자 문자열 출력 string 타입을 리턴해야 합니다. 주의 사항 0은 짝수로 간주합니다. mine function insertDash(str) { let splitedStr = str.split(''); let isBeforeOdds = false; let newArr = []; for(i = 0; i < splitedStr.length; i++) { if(isBeforeOdds === true && Number(splitedStr[i]) % 2 !== 0) { newArr.push('-'); newArr.push(splitedStr[i]);..
(좋은 코드의 작성을 위해) ABCheck ABCheck 문제 문자열을 입력받아 문자열 내에 아래 중 하나가 존재하는지 여부를 리턴해야 합니다. 'a'로 시작해서 'b'로 끝나는 길이 5의 문자열 'b'로 시작해서 'a'로 끝나는 길이 5의 문자열 입력 인자 1 : str string 타입의 알파벳 문자열 출력 boolean 타입을 리턴해야 합니다. 주의 사항 대소문자를 구분하지 않습니다. 공백도 한 글자로 취급합니다. 'a'와 'b'는 중복해서 등장할 수 있습니다. mine function ABCheck(str) { let strUpperCase = str.toUpperCase() let isThatBeStr = false; for(i = 0; i < strUpperCase.length; i++) { if(isThatBeStr === false..
(좋은 코드의 작성을 위해) convertDoubleSpaceToSingle 문제 문자열을 입력받아 해당 문자열에 등장하는 두 칸의 공백을 모두 한 칸의 공백으로 바꾼 문자열을 리턴해야 합니다. 입력 인자 1 : str string 타입의 문자열 출력 string 타입의 문자열 주의 사항 두 칸을 초과하는 공백은 존재하지 않는다고 가정합니다. mine : 0.007080078125 ms function convertDoubleSpaceToSingle(str) { let splitedStr = str.split(' '); const newStr = splitedStr.filter((el) => { return el.length !== 0; }) return newStr.join(' '); } reference : 0.011962890625 ms function convertDoub..
(좋은 코드의 작성을 위해) letterCapitalize letterCapitalize 문제 문자열을 입력받아 문자열을 구성하는 각 단어의 첫 글자가 대문자인 문자열을 리턴해야 합니다. 입력 인자 1 : str string 타입의 공백이 있는 알파벳 문자열 출력 string 타입을 리턴해야 합니다. 주의 사항 단어는 공백으로 구분합니다. 연속된 공백이 존재할 수 있습니다. 빈 문자열을 입력받은 경우, 빈 문자열을 리턴해야 합니다. 입출력 예시 let output1 = letterCapitalize('hello world'); console.log(output1); // "Hello World" let output2 = letterCapitalize('javascript is sexy '); console.log(output2); // "Javascript Is..
(좋은 코드의 작성을 위해) convertListToObject convertListToObject 문제 2차원 배열(배열을 요소로 갖는 배열)을 입력받아 각 배열을 이용해 만든 객체를 리턴해야 합니다. 입력 인자 1 : arr 배열을 요소로 갖는 배열 arr[i]는 string 타입을 요소로 갖는 배열 arr[i].length는 0 또는 2 출력 arr[i]의 첫 번째 요소를 키, 두 번째 요소를 값으로 하는 객체를 리턴해야 합니다. 주의 사항 중복되는 키의 경우, 초기의 값을 사용합니다. 빈 배열을 입력받은 경우, 빈 객체를 리턴해야 합니다. arr[i]의 길이가 0인 경우, 무시합니다. 입출력 예시 const arr = [ ['make', 'Ford'], ['model', 'Mustang'], ['year', '1964'], ['make', 'Bill'], ];..