보드의 칸 채우기 문제
·
알고리즘 연습
입력: number 타입 자연수(1이상) 출력: number 타입 리턴(경우의 수) 조건: 세로길이 2, 가로길이 n인 2xn 크기의 보드가 존재 2x1 크기의 사각형으로 이 보드를 채우는 모든 경우의 수를 리턴해라 주의사항: 사각형은 가로, 세로 어느 방향으로 놓아도 됨 각각의 사각형은 모두 같다고 생각(중복허용x) 사실상 생각해보면 피보나치 수열과 같은 문제임 아래 코드를 살펴보자 let fillingSquare = function (n) { // 1 2 3 5 8 13 21 34 55 89(10) 144(11) 233(12) 377(13) 610(14) 987(15) // 2 output = fillingSquare(4); console.log(output); // --> 5 /* 2 x 4 보드에..
버블(거품) 정렬 알고리즘
·
알고리즘 연습
버블 정렬(bubble sort) 정수를 요소로 갖는 배열을 입력받아 오름차순으로 정렬하여 출력(리턴)하는 구조의 버블 정렬을 구현 해보자 버블 정렬 알고리즘은 아래와 같습니다. 1. 첫 번째 요소가 두 번째 요소보다 크면, 두 요소의 위치를 바꿈 2. 두 번째 요소와 세 번째 요소보다 크면, 두 요소의 위치를 바꿈 3. 1, 2를 마지막까지 반복합니다. (마지막에서 두 번째 요소와 마지막 요소를 비교) 4. 1~3의 과정을 한 번 거치게 되면, 가장 큰 요소가 배열의 마지막으로 밀려남(마지막 인덱스에 위치) 5. 1~3의 과정을 첫 요소부터 다시 반복 6. 5를 통해 두 번째로 큰 요소가 배열의 마지막 바로 두 번째로 밀려남(마지막 인덱스 -1에 위치) 7. 1~3의 과정을 총 n번(배열의 크기) 반복..
알고리즘 연습 - 문자열 배열을 입력 받아 가장 길고, 짧은 문자열을 제거
·
알고리즘 연습
알고리즘 연습 - 문자열을 요소로 가지는 배열을 받아 그 요소에서 가장 길고, 짧은 문자열을 제거한 배열을 리턴하는 함수 입력 string 타입을 요소로 가지는 배열(arr) arr[i].length 는 20 이하 출력 배열을 리턴 주의 사항 가장 긴 문자열과 가장 짧은 문자열의 길이가 같은 경우는 없다고 가정 가장 긴 문자열이나 가장 짧은 문자열이 다수인 경우 가장 나중에 위치한 문자열을 제거 나만의 문제 접근 및 풀이 1.문자열을 비교해서 담을 변수 2개 만들어 두고 2.그 변수에 가장 짧은 문자열, 가장 긴 문자열을 넣는다 3.그 후 기존 배열에서 그 문자열에 해당하는 인덱스를 찾아 그 요소들만 삭제한다 4.삭제하고 남은 배열을 리턴해 준다 function removeExtremes(arr) { /..
알고리즘 연습 - 연속된 홀수 문자열 사이에 특정 문자 추가
·
알고리즘 연습
문자열을 입력받아 연속된 한자리 홀수 숫자 문자열 사이에 '-' 를 추가한 문자열을 리턴하는 함수 주어진 정보: str은 string 타입의 숫자 문자열, 0은 짝수로 간주 인자: str(string 타입의 숫자 문자열) 출력: string 타입을 리턴 function insertDash(str) { // 조건: 두 수 간의 비교(두 숫자 문자열이 홀수인가?) // 각 문자열을 인덱스 단위로 쪼갠 후에 두 인덱스를 숫자화 해서 홀수인지 비교? // 둘다 홀수라면 그 사이에 '-'을 추가하여 // 마지막 반환값은 다 더해진 string 타입 리턴 // debugger; let newStr=str.charAt(0); //str의 인덱스 0을 가진 새로운 문자열 for(let i=..
알고리즘 연습 - 2차원 배열의 요소로 만든 객체를 리턴하는 함수 구현
·
알고리즘 연습
알고리즘 연습 문제 - 나만의 풀이 문제: 2차원 배열(배열을 요소로 갖는 배열)을 입력 받아 그 배열의 요소(배열)로 만든 객체를 리턴 입력 조건: arr[i] 는 string 타입을 요소로 갖는 배열, arr[i].length 는 0 또는 2 출력 조건: arr[i]의 첫번째 요소가 키, 두번째 요소가 값이 되는 객체를 리턴할 것 중복되는 키가 있으면 초기의 값을 사용 빈 배열을 입력 받으면 빈 객체를 리턴 arr[i]의 길이가 0 인 경우 무시할 것 아래는 코딩 내용 function convertListToObject(arr) { // TODO: 여기에 코드를 작성합니다. // 2차원 배열 arr 입력받아 이 배열의 요소 arr[0][0] arr[0][1] 로 객체를 만들어서 객체를 리턴 // re..
알고리즘 연습 - 각 단어 첫글자만 대문자가 되게 하는 함수
·
알고리즘 연습
알고리즘 연습 문제 문자열의 각 단어 첫 글자가 대문자가 되도록 하는 함수 만들기 입력 인자: string 타입 문자열 리턴 값: string 주의 사항: 단어는 공백으로 구분, 연속된 공백 존재 가능, 빈 문자열 입력 시 리턴 값은 빈 문자열 function letterCapitalize(str) { // TODO: 여기에 코드를 작성합니다. // 공백을 구분자?로 해서 각 글자를 구분 // 각 글자의 첫글자를 대문자로 문자열 리턴 // charAt() 과 slice 이용? toUpperCase? split? if(str.length===0){ // 빈 문자열 입력시 빈 문자열 리턴 return ''; } // 연속된 공백? let temp=str.split(' '); //..
알고리즘 연습 - 2의 거듭제곱의 여부를 리턴하는 함수
·
알고리즘 연습
알고리즘 연습 문제: 나의 문제 풀이 방식 문제) 수를 입력 받아 2의 거듭제곱인지 여부를 리턴? 인자: num(number 타입의 정수 num>=1) 출력: boolean 타입을 리턴할 것 주의사항: 반복문(while) 사용, Number.isInteger, Math.log2, Math.log 사용 금지 2의 거듭제곱들의 성질을 파악해 보자 1(2^0), 2, 4, 8 ,16, 32, 64 … 숫자들의 법칙? → 2로 계속 나누었을 때 결국 1이 된다 fuction isPowTwo(num){ let isTwo = false; //boolean 리턴을 위한 변수 지정 while(num >=1){ // 해당 조건이 참일 때까지의 반복(while문) // num을 계속 2로 나누면 어느순간 1 또는3/4 ...