본문 바로가기

알고리즘/프로그래머스 LV29

디펜스 게임 : 프로그래머스 LV2 https://school.programmers.co.kr/learn/courses/30/lessons/142085 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr문제 설명 : 각 라운드 마다 돌면서 남은 병사의 수와 무적권을 모두 소모하여 통과할 수 있는 라운드 수 구하기.문제 해결 : 각 라운드 마다 pq에 값을 저장하고, pq의 크기 size가 무적권보다 많을때 한개씩 poll 하면서 병사를 소모 시켜야함.마지막 음수가 될때 break 하고 탈출 하면 된다. 여기서 핵심은. pq의 size를 비교해서 무적권 보다 클때 poll 해야하는 것이다. import java.io.*;import java.u.. 2025. 5. 14.
프로그래머스 LV.2 구명보트 https://school.programmers.co.kr/learn/courses/30/lessons/42885 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 문제 설명 : 무인도에 갖힌 사람들을 구해야한다. 구명보트는 작아서 한 번에 최대 2명씩 밖에 탈 수 없다.[70, 50, 80, 50] 을 예를 들면 2번째 4번째 사람과 같이 탈 수 있지만, 1번째 3번째 사람은 limit가 초과해서 안된다.문제 출력 조건은 구명보트를 최대한 적게 사용하여 모든 사람을 구출 해야한다. 문제 해설 : 최대 2명씩 이라는 조건을 보았을때 투 포인터 알고리즘을 떠올렸으면 성공이다.배열을 Arrays.sort() .. 2025. 2. 4.
프로그래머스 LV2 ( 디펜스 게임 ) https://school.programmers.co.kr/learn/courses/30/lessons/142085 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr * 남은 병사수와 무적권의 횟수를 잘 사용하여 최대로 막을 수 있는 횟수를 반환하면 되는 문제.* 처음에는 병사수를 최대한 사용하고 무적권을 사용하면 되는줄 알았다.* 그렇게 구현하기 쉽지않았고 결국 문제 풀이를 보니까 pq를 사용한 풀이였다.* enemy 배열을 순차적으로 한개씩 가져와서 문제를 풀어야한다. ( 적은 인덱스 0번부터 접근하니까 )* enemy 배열에 접근을 순차적으로 해서 무적권 갯수만큼은 pq에 저장하고 continue 한.. 2025. 1. 30.
프로그래머스 뒤에 있는 큰 수 찾기 ( LV 2 ) https://school.programmers.co.kr/learn/courses/30/lessons/154539?language=java 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr * 문제 제목 그대로 뒤에 있는 숫자중 가장 큰 숫자를 고르는 것이다. + 제일 가까이 있는 숫자중에서.* 처음에는 BruteFroce를 돌려서 현재 숫자보다 큰 숫자가 등장하면 break를 걸고 결과를 갱신하는 코드를 작성했는데 시초가 났다.* 아무리 짱구를 굴려봐도 답이 안나와서 GPT한테 물어봤다. * Stack을 활용하면 O(N) 시간 복잡도로 끝낼수 있다.* 알고리즘 흐름을 설명하면. 1) numbers 길이.. 2025. 1. 21.
프로그래머스 귤 고르기 ( LV 2 ) + entrySet() 활용 https://school.programmers.co.kr/learn/courses/30/lessons/138476 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr - 귤의 갯수를 가장 적은 가짓수로 담으면 되는 문제이다.- 갯수를 큰거를 기준으로 정렬 후 담으려는 k개 보다 크거나 같으면 그 횟수를 return 시켜주면 된다.- 코드레벨로 구현하면서 Map에 있는 key와 value를 모두 접근이 필요한 상황에 entrySet() 으로 접근이 가능하다는 것을 알았다.- 문제 푸는 방법은 간단하니 entrySet() 접근 방법을 정리하고 마치겠다. * Java Map의 entrySet()이란? - Jav.. 2025. 1. 21.
프로그래머스 : 연속 부분 수열 합의 갯수 ( LV 2 ) https://school.programmers.co.kr/learn/courses/30/lessons/131701 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr * 원형으로 구현된 배열의 모든 연속된 부분 집합의 갯수들을 구하는 문제.* 아이디어는 생각해냈지만 구현 방법에서 막혀서 답을 보았습니다.* 필자의 아이디어 - 우선 Set 자료구조를 사용해서 최종 결과를 반환한다. - Queue 자료구조를 사용해서 길이가 2인 부분 집합의 갯수를 구하려면 2번 pop() 하고 순서대로 2번 push() 하는 방법을 파라미터인 elements 길이만큼 진행하는 것이다. 3일때도 4일때도 마찬가지. - 2번, .. 2025. 1. 19.