본문 바로가기

Algorithm/인프런(inflearn)86

[ 자바스크립트(JavaScript) ] 26 - 숫자만 추출 📍 26 - 숫자만 추출 문자 + 숫자가 섞여있는 문자열에서 숫자만 추출하는 문제다. 숫자판별은 isNaN 함수를 사용해서 숫자인지 확인하거나, 정규표현식(Reg)으로 숫자인지 확인하는 방법을 사용했다. let s = "g0en2T0s8eSoft"; // let s = "tge0a1h205er" // let s = "12a3E4hg5n6vc7x" console.log(solution(s)); // isNaN function solution(s) { let ans = 0; for (let i of s) { if (!isNaN(i)) ans = ans * 10 + (+i); } return +ans; } //isNaN function solution(s) { let ans = ""; for (let i of.. 2021. 8. 17.
[ 자바스크립트(JavaScript) ] 25 - 유효한 팰린드롬 📍 25 - 유효한 팰린드롬 주어진 문자열이 회문인지 판별하는 문제인데, 추가로 알파벳이외의 문자들은 무시한다. 마찬가지로 이전에 파이썬 알고리즘 인터뷰에서 한번 풀어본적이 있다. 알파벳이외의 값을 제거하는 방법으로 정규표현식(Reg)을 이용했다. let s = "found7, time: study; Yduts; emit, 7Dnuof"; console.log(solution(s)); function solution(s){ s = s.toLowerCase(); let notIncludeSpecialCharacter = s.replace(/[^a-z]/g, ''); let compareStr = notIncludeSpecialCharacter.split('').reverse().join(''); if (n.. 2021. 8. 17.
[ 자바스크립트(JavaScript) ] 24 - 회문 문자열 📍 24 - 회문 문자열 이번 섹션은 문자열 탐색을 사용하여 문제를 푸는 섹션이다. 주어진 문자열이 회문인지 판별하는 문제다. 이전에 파이썬 알고리즘 인터뷰에서 한번 풀어본적이 있다. 마지막에 재귀로도 한번 풀어봤다. console.log(solution("gooog")); // split + reverse + join function solution(str){ if (str.split('').reverse().join('') !== str) return false; return true } console.log(solution("gooog")); // for function solution(str){ str = str.toLowerCase(); let n = str.length for (let i=0;.. 2021. 8. 17.
[ 자바스크립트(JavaScript) ] 23 - 봉우리 📍 23 - 봉우리 자신의 상하좌우 숫자보다 큰 숫자의 개수를 찾으면 되는데, 상하좌우를 판별할 때는 dx, dy와 같이 방향 벡터를 설정해주면 확인하기 편하다. 나는 이렇게 풀었다. 상, 하, 좌, 우의 좌표를 하나씩 탐색하고 최댓값을 갱신한다. max로 갱신된 주변 좌표와 원래 나의 좌표와 비교한다음 원래 나의 좌표가 더 크면 cnt++ 해준다. 강사님은 이렇게 푸셨다. flag를 설정한다. 원래 나의 좌표보다 주변좌표가 크면 flag를 0으로 바꾼다. 주변 좌표의 탐색이 끝났는데도 flag가 1이면 원래 나의 좌표가 큰 것이므로 cnt++ 해준다. let n = 5; let arr = [[5, 3, 7, 2, 3], [3, 7, 1, 6, 1], [7, 2, 5, 3, 4], [4, 3, 6, 4,.. 2021. 8. 17.
[ 자바스크립트(JavaScript) ] 22 - 격자판 최대합 📍 22 - 격자판 최대합 n*n의 격자판에서 각 행, 각 열, 두 대각선의 합 중 가장 큰 값을 출력하면 되는데, 첫 번째로 row의 합을 구할때는 반복문을 하나만 선언해서 reduce를 이용했고, column의 합은 중첩반복문을 선언해서 i, j값을 구했다. 대각선은 좌측 상단에서 우측 하단의 방향의 대각선 arr[i][i]과 우측 상단에서 좌측 하단의 방향의 대각선 arr[i][n-i-1]의 방법을 이용해서 구했다. // 가로, 세로, 대각선 로직을 각각 작성한 코드 let n = 5; let arr = [ [10, 13, 10, 12, 15], [12, 39, 30, 23, 11], [11, 25, 50, 53, 15], [19, 27, 29, 37, 27], [19, 13, 30, 13, 19].. 2021. 8. 17.