알고리즘 27

[알고리즘]프로그래머스 LV.1 - 크레인 인형뽑기(JS)

문제 풀이function solution(board, moves) { var answer = 0;//인형을 담을 바구니를 생성하고 moves 에 해당하는 인덱스(+1)를 바구니에 담아준다. 인형을 뽑으면 해당하는 인덱스는 0으로 바꿔준다 만약 뽑으려는 인덱스가 0일 시에는 인형이 안담겨있다는 뜻이므로(2차원 배열의 마지막 인덱스의 배열에서 0일경우) 아무일도 일어나지 않음 var basket = []; for(let i = 0; i i를 -1로 설정하여 0부터 다시 제대로 배열을 순회 할 수 있게되었다. i = -1; } } return answer;} 처음에 i를 0으로 지정하니 테스트 케이스 1 , 2 에서 계속 에러가 났었다.i가..

알고리즘 2024.06.25

[알고리즘]프로그래머스 LV.1 - 숫자짝꿍(JS)

문제예제 풀이function solution(X, Y) { let answer = ''; let num = []; // 문자열 X와 Y를 배열로 변환하고 정렬 X = X.split("").sort((a, b) => a - b); Y = Y.split("").sort((a, b) => a - b); // 숫자의 빈도를 저장할 맵 let xCount = new Map(); let yCount = new Map(); // X의 각 숫자의 빈도 계산 for (let x of X) { //x가 없는 경우에는 0으로 계산하고 1을 더함 , //x가 이미 있는경우에는 x의 밸류값에 1을 한번더 더해 빈도수를 구함 xCo..

알고리즘 2024.06.21

[알고리즘]프로그래머스 LV.1 - 체육복(JS)

문제 출력예 function solution(n, lost, reserve) { // 여벌없이 분실한 학생 let realLost = lost.filter(l => !reserve.includes(l)).sort((a, b) => a - b); // 분실없이 여벌이 있는 학생 let realReserve = reserve.filter(r => !lost.includes(r)).sort((a, b) => a - b); // 체육복을 빌릴 수 있는 학생 수 let answer = n - realLost.length; for (let i = 0; i  여벌이 있는 상태로 분실했을 경우가 있으므로 여벌없이 분실한 학생만 구하여 그에 대해서만 값을 정한다.

알고리즘 2024.06.21

[알고리즘]프로그래머스LV.1 - 대충 만든 자판(JS)

문제 풀이function solution(keymap, targets) { const answer = []; const map = new Map(); //keymap 순환 for (const key of keymap) { // key를 순환 for (let i = 0; i  자판에서 해당하는 알파벳을 치기위해 몇번의 클릭이 필요한지를 구하는것이 우선이다 .맵 객체를 만들어 주어진 자판들 중에 해당하는 알파벳을 누르기위한 버튼의 수가 가장 최소한이 되는 경우의 수를 구하기 위해 조건문으로if (!map.has(key[i]) -> map안에서 key[i]에 해당하는 알파벳이 없다면 또는 i + 1 원래 있던 키의 밸류가 i+1 보다 크다면 새로 갱신을 해주어야 하기에(더 최소한의 클릭으..

알고리즘 2024.06.19

[알고리즘] 프로그래머스 LV.1 - 모의고사(JS)

문제 풀이function solution(answers) { const answer = []; // 수포자들이 찍는 방식의 패턴(s1, s2, s3)과 채점표(score)를 각각 배열로 변환 const s1 = [1, 2, 3, 4, 5]; const s2 = [2, 1, 2, 3, 2, 4, 2, 5]; const s3 = [3, 3, 1, 1, 2, 2, 4, 4, 5, 5]; const score = [0, 0, 0]; // 배열 answers가 주어졌을 때, 문제를 맞힌 횟수를 각각 채점해 score에 입력 for (let i = 0; i  각 수포자의 패턴을 s1 , s2 , s3으로 지정해주어 배열에 저장한다 .각 수포자의 맞춘 개수를 ..

알고리즘 2024.06.13

[알고리즘]프로그래머스LV.1 - 비밀지도

출처 - https://school.programmers.co.kr/learn/courses/30/lessons/17681 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 문제 나의 풀이function solution(n, arr1, arr2) { var answer = []; //arr 을 만들고 수에 해당하는 1을 만들어 1 또는 2 로만들어줌 , 만약 1 이상이라면 맵을 이용해 공백 또는 # 으로 바꿔준다. var toStr1 = []; var toStr2 = []; var str1 =[]; var str2 = []; ..

알고리즘 2024.06.11

[알고리즘] 프로그래머스LV.0 -주사위게임3 (JS)

출처 - https://school.programmers.co.kr/learn/courses/30/lessons/181916 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 문제 풀이function solution(a, b, c, d) { const nums = [a, b, c, d]; const appear = {} //객체에 각 요소가 몇번이나 들어가있는지 함수를 짬 for(let i =0;ia[1] - b[1]) let answer = 0; switch(count){ case 4: a..

알고리즘 2024.06.06

[BOJ] 2581번 - 소수(JS)

문제자연수 M과 N이 주어질 때 M이상 N이하의 자연수 중 소수인 것을 모두 골라 이들 소수의 합과 최솟값을 찾는 프로그램을 작성하시오.예를 들어 M=60, N=100인 경우 60이상 100이하의 자연수 중 소수는 61, 67, 71, 73, 79, 83, 89, 97 총 8개가 있으므로, 이들 소수의 합은 620이고, 최솟값은 61이 된다.입력입력의 첫째 줄에 M이, 둘째 줄에 N이 주어진다.M과 N은 10,000이하의 자연수이며, M은 N보다 작거나 같다.출력M이상 N이하의 자연수 중 소수인 것을 모두 찾아 첫째 줄에 그 합을, 둘째 줄에 그 중 최솟값을 출력한다. 단, M이상 N이하의 자연수 중 소수가 없을 경우는 첫째 줄에 -1을 출력한다. 예제60100 출력62061 풀이const fs = re..

알고리즘 2024.05.28

[BOJ]2292번 - 벌집(JS)

문제풀이const fs = require("fs");let input = fs.readFileSync("/dev/stdin").toString().trim().split("\n").map(Number);let N = parseInt(input);let range = 1 , block = 1;while (block 알고리즘을 생각했을때에 6의 배수씩 증가하는 배열을만들어 N에 해당하는 값이 그 배열에 속해있으면 그 배열의 인덱스를 가져올생각으로 짰었는데 이것역시 배열을 얼만큼이나 할당을해야할지 ... 그리고 반복문을 많이 쓰다보니 시간도 오래걸리고 컴파일 에러가 났었다. 그냥 while문을 사용해 block의 크기가 N보다 커지면 멈추는 반복문을 사용해 간단히 해결 가능했다...while문 ... 쉬운듯 ..

알고리즘 2024.05.26

[알고리즘] 프로그래머스 LV.0 - 조건에 맞게 수열변환2

출처:https://school.programmers.co.kr/learn/courses/30/lessons/181881 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 문제 풀이function solution(arr) { let idx = 0 let prevArr = arr //무한루프를 시작함(true일때에 계속 반복하므로) while(true) { // 현재 배열을 조건에 맞게 변환 const changeCurArr = prevArr.map(a => { if(a >= 50 && a%..

알고리즘 2024.05.26