목록알고리즘/프로그래머스 (183)
쌓고 쌓다
https://school.programmers.co.kr/learn/courses/30/lessons/12987#qna 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 풀이 방법최대 점수를 얻기 위해서상대가 내는 숫자 카드이상이면서 최대한 가까운 숫자 카드를 내야한다.그래야지 내가 가진 큰 숫자의 카드는 또 다른 상대의 큰 숫자 카드를 이기는데 사용할 수 있기 때문이다. A와 B의 숫자 카드를 오름차순으로 정렬한다.A의 숫자 카드를 반복문으로 끝에서부터 돈다.그럼 A가 가진 가장 큰 숫자 카드순으로 반복문을 돌텐데이때 B가 가진 가장 큰 숫자의 카드와 비교하..
https://school.programmers.co.kr/learn/courses/30/lessons/42898 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 풀이 방법이동은 오른쪽 또는 아래로만 이동이 가능하다.그러면 way[i][j] 위치로 이동하는 최단 경로는 way[i-1][j] 와 way[i][j-1] 위치에서 오는 방법뿐이다.즉 way[i][j]에 도착하는 최단 경로의 개수는 way[i-1][j] + way[i][j-1]이다. 반복문을 통해 x 방향으로 채우고 y 방향으로 채우며[i][j] 위치의 값을 [i-1][j]와 [i][j-1]의 값 합으..
https://school.programmers.co.kr/learn/courses/30/lessons/12938 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 풀이 방법각 원소의 곱이 최대가 되게 하려면각 원소들의 크기가 균등하게 일정하게 분포되어있으면 모든 원소의 곱이 최대가 된다. 원소의 합 S가 주어졌을때 N개로 나눠 분배할때 균등하게 분포를 해주면 된다.나눠야할 원소의 합 S가 있을때 N으로 나눈다면 균등하게 분포할 수 있는 값이 된다. 위의 개념을 활용해서현재 idx 위치의 집합 원소를 배정할때현재 배분해야할 원소의 총 합을 남은 원소 자리의 개수..
https://school.programmers.co.kr/learn/courses/30/lessons/12927 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 풀이 방법N을 가지고 최대값을 작게 만드는것이 누적 피로도를 작게 할 수 있는 방법이다.그래서 우선순위 큐를 통해 pop하여 최대값을 갖는 작업을 1시간씩 작업하면 된다. 전체 코드import java.util.*;class Solution { public long solution(int n, int[] works) { long answer = 0; PriorityQue..
https://school.programmers.co.kr/learn/courses/30/lessons/42628# 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 풀이 방법최대힙과 최소힙 두개의 힙을 사용합니다.삽입 연산시 두 힙에 모두 삽입합니다.최대/최소값 삭제 연산시 해당 힙에서 삭제를합니다.그럼 해당 힙이 아닌 다른 힙에서의 데이터 불일치는 어떻게 해결하나?Map을 통해 값의 삽입, 삭제 기록을 남깁니다. 즉, 남은 값의 개수를 Map의 Value로 사용합니다.힙에서 삭제 연산시 Map에서 남은 값이 존재하는지 확인 후에 존재하면 삭제연산을 정상적으로..
https://school.programmers.co.kr/learn/courses/30/lessons/43105 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 방법 위의 피라미드는 다음과 같은 배열로 들어온다. 7 3 8 8 1 0 2 7 4 4 4 5 2 6 5 아래의 층부터 위로 채워나갈 예정이다. 2 7 4 4가 존재하는 층 시작한다. 2 는 다음과 같은 선택지가 있다. 7 3 8 8 1 0 2 7 4 4 4 5 2 6 5 4 와 5중에 더 큰 수를 2에 더하면 된다. 이때 2에 5를 더해주면 된다. 다음은 7에 대해 이야기해보자. 7에서 선..
https://school.programmers.co.kr/learn/courses/30/lessons/42579 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 방법 장르별 총 재생 횟수 Map을 이용해 장르별 총 재생 횟수를 기록 -> genresCnt 장르별 총 재생 횟수를 기록할때, 장르별 노래 Map에 노래 저장 -> genresSong 장르별 총 재생 횟수 Map을 재생 횟수로 정렬 -> List genre genre를 순차적으로 탐색하며 genresSong에서 노래 목록을 조건에 맞춰 정렬 -> songs songs에서 노래를 두개 꺼내 ..
https://school.programmers.co.kr/learn/courses/30/lessons/43163 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 풀이 방법 Lv.3 단계라 다들 BFS는 잘 이해하고 있을 것이다. BFS로 풀었다. 핵심은 문자 하나를 바꿔서 탐색이 가능한 word라 하더라도 최소가 되는 비용으로 탐색이 가능할때 큐에 삽입하는 것이다. 왜냐 탐색 비용이 최소가 될 수 없는데 탐색하는 것은 최소 값을 구하는 문제에서 의미없는 탐색이기 때문이다. 전체 코드 import java.util.*; class Solution { cla..