ALL

    [알고리즘]자릿수의 합

    문제 n개의 자연수가 입력되면, 각 자연수의 자릿수의 합을 구하고, 그 합이 최대인 자연수를 출력. 단, 자릿수의 합이 같은 경우 원래 숫자가 큰 경우를 답으로 함. 풀이 1 function solution(n, arr) { let answer, max = Number.MIN_SAFE_INTEGER; for (let x of arr) { let sum = 0, tmp = x; while (tmp) { sum += tmp % 10; tmp = parseInt(tmp / 10); } if (sum > max) { max = sum; answer = x; } else if (sum === max) { if (x > answer) answer = x; } } return answer; } let arr = [1..

    [알고리즘]문자열 압축

    문제 알파벳 대문자로 이루어진 문자열을 입력받아 같은 문자가 연속으로 반복되는경우 반복되는 문자 바로 오른쪽에 반복 횟수를 표기하는 방법으로 문자열을 압축하여 출력하세요! 풀이 function solution(s) { let answer = ''; let cnt = 1; for (let i = 0; i 1) answer += String(cnt); answer += s[i]; cnt = 1; } } return answer; } let str = 'KKHSSSSSSSE'; console.log(solution(str)); //K2HS7E

    [알고리즘]가장 짧은 문자 거리

    문제 한 개의 문자열 s와 문자 t가 주어지면 s의 각 문자가 s 내의 t와 떨어진 최소거리를 각각 출력하세요! 풀이 function solution(s, t) { let answer = []; let e = 1000; //정방향 탐색 for (let x of s) { if (x === t) { e = 0; answer.push(0); } else { e++; answer.push(e); } } e = 1000; //역방향 탐색 for (let i = s.length - 1; i >= 0; i--) { if (s[i] === t) e = 0; else { e++; answer[i] = Math.min(answer[i], e); } } return answer; } let str = 'teachermode..

    [알고리즘]숫자만 추출하기

    문제 숫자가 포함된 문자열에서 숫자만 출력하세요! 풀이 1 function solution(str) { str = str.toLowerCase().replace(/[a-z]/g, ""); //정규식으로 문자만 제거 return parseInt(str); } let str = "g0en2T0s8eSoft"; console.log(solution(str)); 풀이 2 function solution2(str) { let answer = ""; for (let x of str) { if (!isNaN(x)) answer += x; } return parseInt(answer); } console.log(solution2(str)); isNaN(x) : x가 NaN인지 판별

    [알고리즘]2차원 배열의 사방 탐색

    문제 n*n격자판에서 자신의 상하좌우 숫자보다 큰 숫자가 몇개 있는지 출력하세요! (격자의 가장자리는 0으로 초기화) 풀이 function solution(arr) { let answer = 0; let n = arr.length; let dx = [-1, 0, 1, 0]; let dy = [0, 1, 0, -1]; //사방탐색할 좌표 for (let i = 0; i < n; i++) { for (let j = 0; j < n; j++) { let flag = 1; //돌기 전 flag값 초기화 for (let k = 0; k < 4; k++) { //4번만큼 돌며 사방탐색 let nx = i + dx[k]; //사방탐색 행의 위치 let ny = j + dy[k]; //사방탐색 열의 위치 if ( nx..

    [알고리즘]격자판 최대 합 구하기

    문제 2차원 배열의 각 행의 합, 각 열의 합, 두 대각선의 합 중 가장 큰 합을 출력하세요! 풀이 function solution(arr) { let answer = Number.MIN_SAFE_INTEGER; //answer는 비교 후 최댓값으로 업데이트 하기 위해 최솟값 정수로 초기화. let leng = arr.length; let sum1 = sum2 = 0; //각 행의 합, 열의 합이 될 sum1,2도 0으로 초기화하여 선언 for (let i = 0; i < leng; i++) { sum1 = sum2 = 0; //안쪽 for문이 돌기 전, 이전 기록 초기화. for (let j = 0; j < leng; j++) { sum1 += arr[i][j]; //행이 i번째 일 때 그 행의 원소 ..

    [알고리즘] 배열 등수 구하기 (Array.from)

    문제 배열 내 숫자의 순위를 입력 순서대로 출력하세요. 풀이 function solution(arr) { let n = arr.length; let answer = Array.from({ length: n }, () => 1); //1차원 배열 arr를 1로 초기화 for (let i = 0; i < n; i++) { for (let j = 0; j < n; j++) { //배열의 i번째와 배열 전체를 돌아가며 비교하기 위해 2중 for문 사용 if (arr[i] < arr[j]) answer[i]++; //이번 턴에 비교중인 i가 j와 비교했을 때 작으면 순위가 밀리도록 배열 answer의 i번째를 누적. } } return answer; } let arr = [87, 89, 92, 100, 76]; ..

    [알고리즘]중복 단어 제거 - 배열의 중복 제거 (filter, indexOf)

    문제 배열 내의 중복을 제거하고 리턴하세요. 풀이 1 function solution(s){ let answer = []; for(let i = 0; i s.indexOf(x)===index); } let str=["good", "time", "good", "time", "student"]; solution(str);// ["good","time","student"] filter 콜백함수의 매개변수는 각 배열의 값과 그 인덱스 넘버. 풀이 3 function solution(s){ let answer = [...new Set(s)]; } let str=["good", "time", "good", "time", "student"]; solution(str);// ["good","time","student"..

    [알고리즘] 중복 문자 제거 - indexOf, Set

    문제 입력된 문자열의 중복을 제거하여 리턴하세요. 제거된 문자열의 순서는 원래 순서를 유지합니다. 풀이 1 (indexOf 사용) function solution(s){ let answer = ''; for(let i = 0; i < s.length; i++) { if(s.indexOf(s[i])===i) answer += s[i]; } return answer; } solution("ksekkset"); //kset; s.indexOf('a') : s문자열에서 'a'의 위치를 반환한다. 없다면 -1을 반환한다. s.indexOf('a',1) : s문자열에서 'a'를 1번째 인덱스 부터 찾는다. (그 이전의 인덱스는 무시한다.) if(s.indexOf(s[i])===i) : indexOf는 찾고있는 문자..

    [알고리즘]대문자로 통일

    문제 대문자와 소문자가 같이 존재하는 문자열을 입력받아 대문자로 모두 통일하여 문자열을 출력하세요. 풀이 for of문으로 x가 소문자인지 여부 체크, 소문자이면 대문자로 변환하여 answer에 더해준다. function solution(s) { let answer = ""; for (let x of s) { if (x === x.toLowerCase()) { answer += x.toUpperCase(); } else answer += x; } return answer; } let str = "It is Time To Study"; console.log(solution(str)); x를 아스키 코드로 변환 대문자 : 65~90 소문자 : 97~122 function solution(s) { let an..