코딩테스트

내가 풀고있던 것..function solution(n, m, section) { if(section.length === 1) return 1; const area = section[section.length - 1] - section[0] + 1; let count = 1; let remain = area - m; let temp = true; if(remain 0){ count++; }else if(remain 주어진 문제는 최소한의 횟수로 롤러를 사용하여 벽을 페인트칠하는 것입니다. 롤러의 길이와 다시 페인트칠해야 하는 구역들이 주어졌을 때, 이를 최소한의 횟수로 해결하려는 것입니다.문제를 이해하기 위해서 주어진 코드가 어떻게 동작하는지 단계별로 설명해 드리겠습니다.주어진 코드..
기존코드의 문제function solution(nums) { var answer = 0; function isPrime(num) { if(num === 1) return false; // Math.sqrt 함수를 사용하여 제곱근까지만 반복하도록 한다. for(let i = 2; i { nums.forEach((a) => { if(e !== a){ nums.forEach((x) => { if(x !== a && x !== e){ arr.push(e + a + x); } ..
기존 코드function solution(s) { let answer_arr = []; let s_str = s; // substr함수를 쓰기 위해 문자열 형태의 변수를 만들었다. s = s.split(''); for(let i = 0 ; i 이 코드는 s 문자열의 각 문자를 순회하면서 해당 문자가 이전에 등장했는지 확인하고, 가장 가까운 동일한 문자의 위치를 찾는 방식으로 동작합니다.코드 분석문자열을 배열로 변환: let s_str = s; // 원본 문자열을 저장합니다. s = s.split(''); // 문자열을 문자 배열로 변환합니다.문자 순회: for (let i = 0; i 외부 루프 (for (let i = 0; i ):문자열 s의 각 문자를 순회합니다.answer를 기..
주어진 정수 n 이하의 수에서 홀수만 배열에 담아서 리턴하면 된다. 이건 별건 아니지만 for 문에서 마지막 조건을 i++ 대신 i+=2 로 하는 방법을 미처 생각못했다.. function solution(n) { var answer = []; for(let i = 1; i
문자열 "hello"에서 각 문자를 오른쪽으로 한 칸씩 밀고 마지막 문자는 맨 앞으로 이동시키면 "ohell"이 됩니다. 이것을 문자열을 민다고 정의한다면 문자열 A와 B가 매개변수로 주어질 때, A를 밀어서 B가 될 수 있다면 밀어야 하는 최소 횟수를 return하고 밀어서 B가 될 수 없으면 -1을 return 하도록 solution 함수를 완성해보세요. 제한사항 0 0 && count < A.length){ return count; }else if(count === A.length){ return -1; } } 이렇게 풀긴했지만 function solution(A, B) { if (A===B) return 0; for (let i = 0; i < A.length; i++) { A = A.slice(..
주어진 배열중에서 가장 많이 나오는 '값'을 찾아 리턴하면 된다!!! 만약에 자주나오는 값이 두개이상 겹치면 -1 리턴하면 된다!!! 또 만약에 주어진 배열 길이가 1이면 그냥 그 값 리턴하면 된다!!! 여기서 또 이렇게 고생하다니... 대충 막 풀었던 답 1 아무튼 배열에서 값끼리 비교해서 중복이면 임시배열에 담고 set으로 중복제거 해서 풀어보려했지만 점수는 43.8 점 이었다... function solution(array) { let answer = 0; let temp; let arr = []; for(let i = 0; i 0 && array[i] === temp){ arr.push(temp); arr.push(array[i]); } temp..
이건 쉬운거였는데 수 sort하는 법이 순간 생각 안났어서 적어둔다... function solution(array) { var answer = 0; // 간단한 수 정렬은 아래와 같이 array.sort((a, b) => a - b); // 중앙수 찾기... answer = array[Math.floor(array.length / 2)]; return answer; }
머쓱이네 피자가게는 피자를 두 조각에서 열 조각까지 원하는 조각 수로 잘라줍니다. 피자 조각 수 slice와 피자를 먹는 사람의 수 n이 매개변수로 주어질 때, n명의 사람이 최소 한 조각 이상 피자를 먹으려면 최소 몇 판의 피자를 시켜야 하는지를 return 하도록 solution 함수를 완성해보세요. function solution(slice, n) { var answer = 0; // 짝수면 걍 나누기 홀수면 나누고 버리고 + 1 answer = n % slice === 0 ? n / slice : Math.floor(n / slice) + 1; return answer; } 이렇게 하였지만 그냥 버림하면 되는 거였다.... function solution(slice, n) { return Math..
뭐지 이건 수학인가 아닌가?!? 큰 종이를 1 x 1 크기로 자르려고 합니다. 예를 들어 2 x 2 크기의 종이를 1 x 1 크기로 자르려면 최소 가위질 세 번이 필요합니다. 정수 M, N이 매개변수로 주어질 때, M x N 크기의 종이를 최소로 가위질 해야하는 횟수를 return 하도록 solution 함수를 완성해보세요. 뭐지???? 잘모르겠어서 그냥 곱하고 1 뺐는데 되었다?? function solution(M, N) { var answer = 0; answer = M * N - 1; return answer; }
연속된 세 개의 정수를 더해 12가 되는 경우는 3, 4, 5입니다. 두 정수 num과 total이 주어집니다. 연속된 수 num개를 더한 값이 total이 될 때, 정수 배열을 오름차순으로 담아 return하도록 solution함수를 완성해보세요. 그렇다.. 그냥 연속된 수의 합이다.. 두개의 인자가 주어진다. 첫번째, num 정수이며 더해야 할 숫자들의 총 갯수를 뜻한다. 두번째, total 정수이며 다 더했을 때 이 값이 되면 된다... 난 다시한번 내가 비전공에 수포자였음에 좌절하였다.... 이런저런 메소드와 반복문 기타 등등이 생각났지만 수학적인 해법은 전혀 떠오르지 않았다... 그래서 역시 무식하게 마구 풀었다.. function solution(num, total) { var answer =..
휴 레벨0 이걸 이렇게 풀다니 아는 메소드들인데도 생각이 안났다.. forEach forEach 는 좋지 않다고 생각했건만 아무튼 좋은 답은 function solution(s1, s2) { const intersection = s1.filter((x) => s2.includes(x)); return intersection.length; } 스프레드연산자와 set을 이용하는 독특한(?)방법도.. function solution(s1, s2) { const concat = [...s1, ...s2]; const setConcat = Array.from(new Set(concat)); return concat.length - setConcat.length; }
일단 나는 비전공에 학생때 문과 + 수포자 + 예체능 이었다. 등차수열 등비수열이 뭔지부터 알아야 했다... 등차수열 : 차(공차)가 같은 수가 줄지어 있는것... 첫째항에 일정한 수를 더해서 얻은 항 등비수열 : 비(공비)가 같은 수가 줄지어 있는것... 첫째항에 일정한 수를 곱해서 얻은 항 1,2,3,4,5 에서 공차는 1 1,2,4,8,16 에서 공비는 2 그렇다고 한다... 계산은 어렵지 않았다.. function solution(common) { var answer = 0; const oneTwo = common[1] - common[0]; const twoThree = common[2] - common[1]; //등차면 if(twoThree === oneTwo){ answer = common[..
어우 힘들었다 ㅠㅠ 어찌저찌 풀긴했는데.. 붕대감기 function solution(bandage, health, attacks) { const t = bandage[0]; const x = bandage[1]; const y = bandage[2]; let currHealth = health; let curAttack = 0; for ( const e of attacks ){ const attackTime = e[0]; const damage = e[1]; const timeDiff = attackTime - curAttack - 1; const success = Math.floor(timeDiff / t); let get = timeDiff * x + success * y; currHealth += ..
2시간 이것저것 헤메다가 못 풀어서 선생님 불렀다 ㅠㅠ 무슨 옹알이가 이렇게 어려워!! 주어진 배열 ["aya", "yee", "u", "maa", "wyeoo"]; ["ayaye", "uuuma", "ye", "yemawoo", "ayaa"]; 문제 머쓱이는 태어난 지 6개월 된 조카를 돌보고 있습니다. 조카는 아직 "aya", "ye", "woo", "ma" 네 가지 발음을 최대 한 번씩 사용해 조합한(이어 붙인) 발음밖에 하지 못합니다. 문자열 배열 babbling이 매개변수로 주어질 때, 머쓱이의 조카가 발음할 수 있는 단어의 개수를 return하도록 solution 함수를 완성해주세요. 아무튼 이런 문제인데... 정규식을 안쓰고 해볼려다가 사실 정규식 모름 처음에 작성한 답은 산으로 가서 버렸고..
문제 설명 문자열로 구성된 리스트 strings와, 정수 n이 주어졌을 때, 각 문자열의 인덱스 n번째 글자를 기준으로 오름차순 정렬하려 합니다. 예를 들어 strings가 ["sun", "bed", "car"]이고 n이 1이면 각 단어의 인덱스 1의 문자 "u", "e", "a"로 strings를 정렬합니다. 제한 조건 strings는 길이 1 이상, 50이하인 배열입니다. strings의 원소는 소문자 알파벳으로 이루어져 있습니다. strings의 원소는 길이 1 이상, 100이하인 문자열입니다. 모든 strings의 원소의 길이는 n보다 큽니다. 인덱스 1의 문자가 같은 문자열이 여럿 일 경우, 사전순으로 앞선 문자열이 앞쪽에 위치합니다. 입출력 예 strings n return ["sun", "b..
코테를 처음 풀어봤다.. 생각보다 어려웠다 ㅜ,ㅜ 문제 명함 지갑을 만드는 회사에서 지갑의 크기를 정하려고 합니다. 다양한 모양과 크기의 명함들을 모두 수납할 수 있으면서, 작아서 들고 다니기 편한 지갑을 만들어야 합니다. 이러한 요건을 만족하는 지갑을 만들기 위해 디자인팀은 모든 명함의 가로 길이와 세로 길이를 조사했습니다. 아래 표는 4가지 명함의 가로 길이와 세로 길이를 나타냅니다. 명함 번호 가로 길이 세로 길이 1 60 50 2 30 70 3 60 30 4 80 40 가장 긴 가로 길이와 세로 길이가 각각 80, 70이기 때문에 80(가로) x 70(세로) 크기의 지갑을 만들면 모든 명함들을 수납할 수 있습니다. 하지만 2번 명함을 가로로 눕혀 수납한다면 80(가로) x 50(세로) 크기의 지갑..
adminisme
'코딩테스트' 카테고리의 글 목록