목록프로그래머스 알고리즘/3단계 (28)
N
https://school.programmers.co.kr/learn/courses/30/lessons/92345?language=javascript 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr DFS를 이용해 시뮬레이션을 풀었다. dfs에 전달하는 것은 현재 플레이어의 x, y 좌표, 다음 플레이어의 x, y 좌표다. 우선 return할 변수 result를 선언하여 [false, 0]으로 저장한다. result는 [진행 여부, 움직인 횟수]를 뜻한다. 우선 인자로 받아온 좌표(ax, ay)가 상하좌우로 움직일 수 있는지 판단한다. 만약 4방향 모두 움..
https://school.programmers.co.kr/learn/courses/30/lessons/138475?language=javascript 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr DP와 약수의 개수를 구하는 공식을 이용해 문제 풀이. 우선 소수를 판별할 수 있는 에라토스테네스의 체 방식을 이용해 약수의 개수를 구할 수 있다는 것을 떠올렸다. 에라토스테네스의 체를 이용해서 각 수의 배수에 도달하면서 카운팅을 해준다. 카운팅이 끝나면 각 범위 내에서 카운팅이 많은 수를 구한다. 단, 카운팅이 같은 수가 여러개면 가장 작은 수를 구해야 하는..
https://school.programmers.co.kr/learn/courses/30/lessons/12942 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 백준 문제에도 동일한 유형이 있다. 아래 링크에 설명이 있으니 참고! https://eunchanee.tistory.com/294 (백준 c++)11049 행렬 곱셈 순서 문제 크기가 N×M인 행렬 A와 M×K인 B를 곱할 때 필요한 곱셈 연산의 수는 총 N×M×K번이다. 행렬 N개를 곱하는데 필요한 곱셈 연산의 수는 행렬을 곱하는 순서에 따라 달라지게 된다. 예를 들어, A eunchanee.t..
https://programmers.co.kr/learn/courses/30/lessons/12927?language=javascript 코딩테스트 연습 - 야근 지수 회사원 Demi는 가끔은 야근을 하는데요, 야근을 하면 야근 피로도가 쌓입니다. 야근 피로도는 야근을 시작한 시점에서 남은 일의 작업량을 제곱하여 더한 값입니다. Demi는 N시간 동안 야근 피로도 programmers.co.kr 최대힙(max heap)을 이용한 문제 풀이. 최대힙을 클래스로 구현하고, 이 힙에 works의 요소를 하나씩 push한다. push하게 되면 알아서 최대힙으로 정렬이 된다. 이후 n만큼 반복하면서 힙을 순회한다. pop()을 하게 되면 가장 큰 수가 앞에 나오게 되며, 해당 일이 0이 아닌 경우 -1을 하여 다..
https://programmers.co.kr/learn/courses/30/lessons/77486?language=cpp 코딩테스트 연습 - 다단계 칫솔 판매 민호는 다단계 조직을 이용하여 칫솔을 판매하고 있습니다. 판매원이 칫솔을 판매하면 그 이익이 피라미드 조직을 타고 조금씩 분배되는 형태의 판매망입니다. 어느정도 판매가 이루어진 후, programmers.co.kr map과 dfs를 활용한 문제 풀이. 우선 enroll과 referral의 관계를 map 형태로 그려준다. 또한, cost라는 map을 이용해서 수익을 구할 것이다. enroll과 referral을 for문으로 순회하면서 map을 형성. key = enroll[i]로 하고, value = referral[i]로 저장한다. 만약 ref..
https://programmers.co.kr/learn/courses/30/lessons/77486 코딩테스트 연습 - 다단계 칫솔 판매 민호는 다단계 조직을 이용하여 칫솔을 판매하고 있습니다. 판매원이 칫솔을 판매하면 그 이익이 피라미드 조직을 타고 조금씩 분배되는 형태의 판매망입니다. 어느정도 판매가 이루어진 후, programmers.co.kr Map을 이용한 문제 풀이. map = enroll과 referral 배열의 부모-자식 관계를 나타내기 위한 Map. profit = 각 사람들의 판매 이익을 나타내기 위한 Map. enroll을 순회하면서 부모-자식 관계를 나타내도록 하자. enroll[i]를 key, referral[i]를 value로 가지도록 하여 map에 저장한다. 이후 seller..
https://programmers.co.kr/learn/courses/30/lessons/12971?language=javascript 코딩테스트 연습 - 스티커 모으기(2) N개의 스티커가 원형으로 연결되어 있습니다. 다음 그림은 N = 8인 경우의 예시입니다. 원형으로 연결된 스티커에서 몇 장의 스티커를 뜯어내어 뜯어낸 스티커에 적힌 숫자의 합이 최대가 되도록 programmers.co.kr DP를 이용한 문제 풀이. 하나의 스티커를 땠을 때, 양 옆의 스티커를 사용하지 못하기 때문에 DP 테이블을 2개 사용해야 한다. 왜냐하면 아래처럼 두 가지 경우 중 합이 큰 값을 골라야 하기 때문이다. 1) 첫번째 스티커부터 땠을 때(가장 마지막에 있는 스티커를 사용하지 못함) 2) 두번째 스티커부터 땠을 때..
https://programmers.co.kr/learn/courses/30/lessons/12979?language=javascript 코딩테스트 연습 - 기지국 설치 N개의 아파트가 일렬로 쭉 늘어서 있습니다. 이 중에서 일부 아파트 옥상에는 4g 기지국이 설치되어 있습니다. 기술이 발전해 5g 수요가 높아져 4g 기지국을 5g 기지국으로 바꾸려 합니다. 그런데 5 programmers.co.kr 조건이 크지 않기 때문에 완전 탐색으로 풀 수 있다. 기지국 번호가 1부터 시작하니 start = 1로 시작. 인덱스는 0부터 시작한다. start { let answer = 0; let index = 0; let start = 1; while(start = stations[index] - w && start