🍀 코딩 테스트 40

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++와 같이 증감식을 써주지 않으면 무한루프가 돈다.

합계 알고리즘

// 문제 : 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..

3주차 문제 (위장)

문제 설명 스파이들은 매일 다른 옷을 조합하여 입어 자신을 위장합니다. 예를 들어 스파이가 가진 옷이 아래와 같고 오늘 스파이가 동그란 안경, 긴 코트, 파란색 티셔츠를 입었다면 다음날은 청바지를 추가로 입거나 동그란 안경 대신 검정 선글라스를 착용하거나 해야 합니다. 종류이름 얼굴 동그란 안경, 검정 선글라스 상의 파란색 티셔츠 하의 청바지 겉옷 긴 코트 스파이가 가진 의상들이 담긴 2차원 배열 clothes가 주어질 때 서로 다른 옷의 조합의 수를 return 하도록 solution 함수를 작성해주세요. 제한사항 clothes의 각 행은 [의상의 이름, 의상의 종류]로 이루어져 있습니다. 스파이가 가진 의상의 수는 1개 이상 30개 이하입니다. 같은 이름을 가진 의상은 존재하지 않습니다. clothe..

2주차 문제 (JadenCase 문자열 만들기)

1. 첫번째 시도 -> 실패 function solution(s) { var answer = s .split(" ") .map((word) => word[0].toUpperCase() + word.substr(1)) .join(" "); return answer; } 2. 두번째 시도 -> 실패 테스트1에서 통과를 못했듯이, 일단 소문자로 모두 초기화(toLowerCase()이용)를 한 다음에 메서드를 사용하기로 했다. function solution(s) { var answer = s.toLowerCase() .split(" ") .map((word) => word[0].toUpperCase() + word.substr(1)) .join(" "); return answer; } 3. 세번째 시도 -> ..

1주차 문제 (올바른 괄호)

아마 문자열과 관련이 되어있는 문제일 듯 해서 문자열 관련 메서드를 찾아보았다. 하단의 블로그를 참조하였다. https://inpa.tistory.com/entry/JS-%F0%9F%93%9A-String-%EB%A9%94%EC%86%8C%EB%93%9C-%E2%9C%8F%EF%B8%8F-%EC%A0%95%EB%A6%AC [JS] 📚 자바스크립트 String 메소드 💯 총정리 자바스크립트 String 메소드 String 객체는 원시 타입인 문자열을 다룰 때 유용한 프로퍼티와 메소드를 제공하는 레퍼(wrapper) 객체이다. 변수 또는 객체 프로퍼티가 문자열을 값으로 가지고 있다 inpa.tistory.com 또한 문자열의 특정 문자 개수 세는 법을 찾았다. https://deeplify.dev/front..

1 2 3 4