Algorithm
-
2021 Dev-Matching) 로또의 최고 순위와 최저 순위Algorithm/프로그래머스 2022. 7. 7. 15:01
https://school.programmers.co.kr/learn/courses/30/lessons/77484 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr function solution(lottos, win_nums) { var answer = []; let corNum = 0; let zeroNum = 0; lottos.push(...win_nums); const lottosMap = new Map(); for (let x of lottos) { lottosMap.set(x, lottosMap.get(x) + 1 || 1); } for (let ..
-
2022 KAKAO BLIND RECRUITMENT) 신고 결과 받기신고 결과 받기Algorithm/프로그래머스 2022. 7. 7. 13:29
문제 https://school.programmers.co.kr/learn/courses/30/lessons/92334 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr function solution(id_list, report, k) { var answer = []; answer = Array.from({ length: id_list.length }, () => 0); const reportArr = [...new Set(report)].map((v) => v.split(" ")); let reportMap = new Map(); for (let x of..
-
최대부분증가수열Algorithm 2022. 7. 6. 12:30
문제설명 N개의 자연수로 이루어진 수열이 주어졌을 때, 그 중에서 가장 길게 증가하는(작은 수에서 큰 수로) 원소들의 집합을 찾는 프로그램을 작성하라. 예를 들어, 원소가 2, 7, 5, 8, 6, 4, 7, 12, 3 이면 가장 길게 증가하도록 원소들을 차례대로 뽑아내면 2, 5, 6, 7, 12를 뽑아내어 길 이가 5인 최대 부분 증가수열을 만들 수 있다. 입력설명 첫째 줄은 입력되는 데이터의 수 N(1≤N≤1,000, 자연수)를 의미하고, 둘째 줄은 N개의 입력데이터들이 주어진다. 출력설명 첫 번째 줄에 부분증가수열의 최대 길이를 출력한다. 입력예제 8 5 3 7 8 6 2 9 4 출력예제 4 function solution(n, arr) { let answer = 0; const dy = []; ..
-
섬나라 아일랜드Algorithm 2022. 7. 5. 14:50
문제설명 N*N의 섬나라 아일랜드의 지도가 격자판의 정보로 주어집니다. 각 섬은 1로 표시되어 상하좌 우와 대각선으로 연결되어 있으며, 0은 바다입니다. 섬나라 아일랜드에 몇 개의 섬이 있는지 구하는 프로그램을 작성하세요. 입력설명 첫 번째 줄에 자연수 N(3= 0 && ny >= 0 && nx < n && ny < 7 && check[nx][ny] === 1) { check[nx][ny] = 0; DFS(nx, ny); } } } for (let i = 0; i < n; i++) { for (let j = 0; j < n; j++) { if (check[i][j] === 1) { DFS(i, j); check[i][j] = 0; answer++; } } } return answer; } 풀이2) BFS..
-
송아지 찾기(BFS)Algorithm 2022. 7. 5. 12:47
문제설명 현수는 송아지를 잃어버렸다. 다행히 송아지에는 위치추적기가 달려 있다. 현수의 위치와 송아 지의 위치가 수직선상의 좌표 점으로 주어지면 현수는 현재 위치에서 송아지의 위치까지 다음 과 같은 방법으로 이동한다. 송아지는 움직이지 않고 제자리에 있다. 현수는 스카이 콩콩을 타고 가는데 한 번의 점프로 앞으로 1, 뒤로 1, 앞으로 5를 이동할 수 있다. 최소 몇 번의 점프로 현수가 송아지의 위치까지 갈 수 있는지 구하는 프로그램을 작성 하세요. 입력설명 첫 번째 줄에 현수의 위치 S와 송아지의 위치 E가 주어진다. 직선의 좌표 점은 1부터 10,000 까지이다. 출력설명 점프의 최소횟수를 구한다. 답은 1이상입니다. 입력예제 5 14 출력예제 3 function solution(s, e) { let..
-
미로탐색 (DFS)Algorithm 2022. 7. 5. 00:42
문제 설명 7*7 격자판 미로를 탈출하는 경로의 가지수를 출력하는 프로그램을 작성하세요. 출발점은 격자의 (1, 1) 좌표이고, 탈출 도착점은 (7, 7)좌표이다. 격자판의 1은 벽이고, 0은 통로이다. 격 자판의 움직임은 상하좌우로만 움직인다. 미로가 다음과 같다면 위의 지도에서 출발점에서 도착점까지 갈 수 있는 방법의 수는 8가지이다. 입력설명 7*7 격자판의 정보가 주어집니다. 출력설명 첫 번째 줄에 경로의 가지수를 출력한다. 입력예제 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 1 0 0 0 1 1 0 1 0 1 1 1 1 0 0 0 0 1 1 1 0 1 1 0 0 1 0 0 0 0 0 0 출력예제 8 function solution(check) { let answer = 0; /..
-
조합의 경우수(Memoization)Algorithm 2022. 6. 28. 15:00
위와 같은 공식을 재귀함수를 사용하여 구현할 때 재귀가 뻗어나가는 과정에서 중복된 계산이 존재한다. 예를 들어 5C2 = 4C2 + 4C3 = 3C1 + 3C2 + 3C2 + 3C3 으로 표현되는데 3C2처럼 동일한 계산이 중복되는 경우가 항상 있다. 계산하는 숫자가 커질경우 위와 같이 하나하나 다 계산을 하게 된다면 처리하는 속도가 현저히 느려지게 된다. 이 때 우리는 메모이제이션이라는 걸 활용할 수가 있다. 미리 만들어 둔 2차원 빈 배열에 처음 계산한 값을 저장해두고 다음에도 똑같은 계산이 나올경우 메모이제이션에서 불러와서 값을 바로 할당하는 것이다. 이를 코드로 구현하면 다음과 같다. function solution(n, r) { let answer = 0; let memoization = Arr..