학습 TIL/Algorithm
문제 설명 양의 정수 n이 주어집니다. 이 숫자를 k진수로 바꿨을 때, 변환된 수 안에 아래 조건에 맞는 소수(Prime number)가 몇 개인지 알아보려 합니다. 0P0처럼 소수 양쪽에 0이 있는 경우 P0처럼 소수 오른쪽에만 0이 있고 왼쪽에는 아무것도 없는 경우 0P처럼 소수 왼쪽에만 0이 있고 오른쪽에는 아무것도 없는 경우 P처럼 소수 양쪽에 아무것도 없는 경우 단, P는 각 자릿수에 0을 포함하지 않는 소수입니다. 예를 들어, 101은 P가 될 수 없습니다. 정수 n과 k가 매개변수로 주어집니다. n을 k진수로 바꿨을 때, 변환된 수 안에서 찾을 수 있는 위 조건에 맞는 소수의 개수를 return 하도록 solution 함수를 완성해 주세요. 예시) 437674을 3진수로 바꾸면 2110201..
문제만 언급하고 제한사항이나 입출력 예시는 생략할 것이다. 문제 어피치가 화살 n발을 다 쏜 후에 라이언이 화살 n발을 쏩니다. 점수를 계산합니다. 만약, k점을 어피치가 a발을 맞혔고 라이언이 b발을 맞혔을 경우 더 많은 화살을 k점에 맞힌 선수가 k점을 가져갑니다. 단, a = b일 경우는 어피치가 k점을 가져갑니다. 또한 a = b = 0인 경우, 즉, 라이언과 어피치 모두 k점에 단 하나의 화살도 맞히지 못한 경우는 어느 누구도 k점을 가져가지 않습니다. ex) 어치피가 10점을 2발 맞혔고 라이언도 10점을 2발 맞혔을 경우 어피치가 10점을 가져갑니다. ex) 어피치가 10점을 1발 맞혔고 라이언은 10점을 2발 맞혔을 경우 라이언이 10점을 가져갑니다. 모든 과녁 점수에 대해 각 선수의 최종..
문제 설명 조이스틱으로 알파벳 이름을 완성하세요. 맨 처음엔 A로만 이루어져 있습니다. ex) 완성해야 하는 이름이 세 글자면 AAA, 네 글자면 AAAA 조이스틱을 각 방향으로 움직이면 아래와 같습니다. ▲ - 다음 알파벳 ▼ - 이전 알파벳 (A에서 아래쪽으로 이동하면 Z로) ◀ - 커서를 왼쪽으로 이동 (첫 번째 위치에서 왼쪽으로 이동하면 마지막 문자에 커서) ▶ - 커서를 오른쪽으로 이동 예를 들어 아래의 방법으로 "JAZ"를 만들 수 있습니다. - 첫 번째 위치에서 조이스틱을 위로 9번 조작하여 J를 완성합니다. - 조이스틱을 왼쪽으로 1번 조작하여 커서를 마지막 문자 위치로 이동시킵니다. - 마지막 위치에서 조이스틱을 아래로 1번 조작하여 Z를 완성합니다. 따라서 11번 이동시켜 "JAZ"를 ..
문제 설명 명함 지갑을 만드는 회사에서 지갑의 크기를 정하려고 합니다. 다양한 모양과 크기의 명함들을 모두 수납할 수 있으면서, 작아서 들고 다니기 편한 지갑을 만들어야 합니다. 이러한 요건을 만족하는 지갑을 만들기 위해 디자인팀은 모든 명함의 가로 길이와 세로 길이를 조사했습니다. 아래 표는 4가지 명함의 가로 길이와 세로 길이를 나타냅니다. 명함 번호 가로 길이 세로 길이 1 60 50 2 30 70 3 60 30 4 80 40 가장 긴 가로 길이와 세로 길이가 각각 80, 70이기 때문에 80(가로) x 70(세로) 크기의 지갑을 만들면 모든 명함들을 수납할 수 있습니다. 하지만 2번 명함을 가로로 눕혀 수납한다면 80(가로) x 50(세로) 크기의 지갑으로 모든 명함들을 수납할 수 있습니다. 이때..
문제 : 학생의 정보가 담긴 객체를 요소로 갖는 배열을 입력받아 아래 조건에 맞게 변형된 배열을 리턴해야 합니다. 1. 남학생들의 정보는 리턴하는 배열에서 제외합니다. 2. 'grades' 속성값은 평균값(number 타입)으로 바꿉니다. 주의사항 : 반복문 사용금지. 배열을 리턴해야 합니다. 배열로 되어 있는 학생들의 성적을 number 타입의 평균값으로 변형해야 합니다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 function studentReports(students) { // 일단 여자만 필터 let onlyGirls = students.filter((el) => { return el.gender === 'female'; }) //students배열의 객체요소들 안에있는 g..
문제 : 문자열을 요소로 갖는 배열을 입력받아 가장 짧은 문자열과 가장 긴 문자열을 제거한 배열을 리턴해야 합니다. 주의사항 : 가장 짧은 문자열의 길이와 가장 긴 문자열의 길이가 같은 경우는 없습니다. 가장 짧은 문자열 또는 가장 긴 문자열이 다수일 경우, 나중에 위치한 문자열을 제거합니다. 배열 안의 문자열 최대길이는 20. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 function removeExtremes(arr) { // 가장 짧은 길이를 찾아서 그것의 인덱스 값을 찾는다 //인덱스 값을 찾아서 그것을 제외하고 하나씩 푸쉬한다. let shortestLth = 20; // 가장 짧은 길이를 찾기위한 수 let longes..
문제 : 문자열을 입력받아 연속되는 문자가 있을 경우, 연속 구간을 반복되는 수와 문자로 조합한 형태로 압축한 문자열을 리턴해야 합니다. 주의사항 : 빈 문자열을 입력받은 경우, 빈 문자열을 리턴해야 합니다. 3개 이상 연속되는 문자만 압축해야 합니다. 내가 푼 원리 : 문자열을 하나씩 추가하는데, 추가하면서 연속해서 같은 문자가 3개 이상되면 그만큼을 갯수+문자 조합으로 바꿔준다. 이렇게 풀어야겠다고 생각을 해놓고 코드를 짰는데 부딪히는게 너무 많았다. 콘솔창에서 디버그만 100번은 돌려본것 같다.. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 function compressString(str) { //aabbbb..