전체 글 182

LV1 - 문자열 내 마음대로 정렬하기

풀이 function solution(strings, n) { var answer = strings.sort((a, b) => a[n] === b[n] ? a.localeCompare(b) : a[n].localeCompare(b[n]) ); return answer; } sort() , localeCompare() 관련 참고 블로그 https://daniel-park.tistory.com/14 [Javascript] sort() 함수의 함정 Array.sort() 프로그래머스 알고리즘을 풀던 중 한 가지 사실을 알게 되었다. const array1 = [1, 30, 4, 21, 100000]; array1.sort(); console.log(array1); 다음 코드의 결과는 [1, 4, 21, 30,..

LV1 - 나누어 떨어지는 숫자 배열

풀이 function solution(arr, divisor) { var answer = []; arr.every((num) => num % divisor !== 0) ? (answer = [-1]) : arr .sort((a, b) => a - b) .map((element) => { if (element % divisor === 0) { answer.push(element); } }); return answer; } 이번에 문제를 풀면서 array.every()를 처음 써보았는데 효율이 좋았다. 조건에서 divisor로 나누어 떨어지는 element가 하나도 없다면을 어떻게 처리해주어야할지 고민이었는데, every()함수를 사용하여 나머지가 모두 0이 아니라면 [-1]을 반환하도록 하였다. 그외의 경..

LV1 - 가운데 글자 가져오기

풀이 function solution(s) { if (s.length % 2 == 0) { answer = s[Math.floor(s.length / 2) - 1] + s[Math.floor(s.length / 2)]; } else { answer = s[Math.floor(s.length / 2)]; } return answer; } 온전히 내가 풀어서 통과한 문제라서 뿌듯했다. 가운데 글자를 어떻게 판별할지, 기준을 어떻게 세울지가 가장 고민이었었다. 고민하다보니, 길이를 2로 나누었을 때, 몫이 가운데이고, 길이가 짝수인 경우에는 몫과 그 앞의 문자와 함께 가운데이다. 앞으로 뭔가 문제가 잘 안풀릴 때, 나누기의 몫이랑 나머지랑 연관이 되어있지 않을까라는 접근법을 시도해야겠다.

do-while문

// do 문을 사용하여 1부터 5까지 정수의 합 var sum = 0; let i = 1; //초기식 do { sum = sum + i; //실행문 i++; //증감식 } while (i < 6); //조건식 console.log("합계: " + sum); while 문은 루프에 진입하기 전에 먼저 조건식부터 검사한다. 하지만 do / while 문은 먼저 루프를 한 번 실행 한 후에 조건식을 검사한다. 즉, do / while 문은 조건식의 결과와 상관없이 무조건 한 번은 루프를 실행한다. do{}안에 i++와 같이 증감식을 써주지 않으면 무한루프가 돈다.

CRA 템플릿 만들기 (+ 프로젝트 구조 설명)

하단처럼 CRA로 template이라는 이름으로 하나 만들어준다. yarn create react-app template code . // 터미널에서 vsc로 열 수 있다. CRA 프로젝트 구조 설명 .gitignore 같은 경우는 버전 관리에 포함이 되면 안되는 파일들에 대한 정보를 담는 파일이다. package.json 내 프로젝트에 쓰이고 있는 라이브러리와 버전들이 명시되어 있다. public은 정적인 요소들을 담는 곳이다. 컨텐츠가 변하지 않는 것들을 담는 폴더이다. (HTML, 리소스, 이미지 등이 포함된다.) src는 컨텐츠가 다양하게 변화되는 우리의 소스코드들을 담는 폴더이다. manifest.json 은 pwa를 만들때 (모바일에서 저장하는 웹 어플리케이션) 필요하다. robots.txt는..

합계 알고리즘

// 문제 : n명의 점수 중에서 80점 이상인 점수의 합계 // 합계알고리즘 (Sum Algorithm): 주어진 범위에 주어진 조건에 해당하는 자료들의 합계 // [1] Input(입력) var scores = [100, 75, 50, 37, 90, 95]; var sum = 0; // [2] Process(처리) for (i = 0; i = 80) { sum = sum + scores[i]; } } // [3] Output(출력) console.log(sum); 배운점 1. 어떻게 하면 조건식을 만족하는 숫자들만 뽑아낼까 생각이 들었는데, scores[i] 자체로 쓰는게 이미 if 조건문을 통과한 것들만 남는 다는 것을 알게 되었..

CHAPTER 03 그리디

그리디 알고리즘이란 현재 상황에서 지금 당장 좋은 것만 고르는 문제해결 방법이다. 예제3-1 카운터에는 거스름돈으로 사용할 500원, 100원, 50원, 10원짜리 동전이 무한히 존재한다고 가정한다. 손님에게 거슬러줘야할 돈이 N원일 때, 거슬러줘야 할 동전의 최소 개수를 구하라. 단, 거슬러줘야 할 돈 N은 항상 10의 배수이다. const coin_types = [500, 100, 50, 10]; let money = 1260; let result = 0; coin_types.forEach((coin) => { result = result + Math.floor(money / coin); money = money % coin; }); console.log(result); 이 문제를 풀면서 느낀점은 f..