[프로그래머스] 베스트앨범 - 42579 (Java)
·
알고리즘/Java
문제 URLhttps://school.programmers.co.kr/learn/courses/30/lessons/42579문제 설명주어진 장르별 재생 횟수와 곡별 고유 번호를 기반으로 가장 인기 있는 곡들을 선정하는 문제입니다. 장르별로 재생 횟수가 높은 순서대로 정렬하며, 같은 장르 내에서는 재생 횟수가 높은 두 곡만 포함합니다. 재생 횟수가 동일한 경우, 고유 번호가 낮은 곡이 우선순위를 가집니다.나의 풀이접근 방식데이터 구조 설계HashMap> genreMap: 장르별 곡 정보를 저장합니다.Key: 장르 이름Value: [곡 고유 번호, 재생 횟수]를 저장한 리스트HashMap playMap: 장르별 총 재생 횟수를 저장합니다.Key: 장르 이름Value: 장르 전체 재생 횟수로직 구현반복문을 통..
[프로그래머스] 오픈채팅방 - 42888(Java)
·
알고리즘/Java
문제 URLhttps://school.programmers.co.kr/learn/courses/30/lessons/42888문제 설명주어진 문제는 오픈 채팅방에서 사용자의 행동을 기록한 로그를 바탕으로, 최종적으로 출력할 메시지를 생성하는 것입니다. 다양한 사용자의 닉네임 변경 이력과 입퇴장 기록을 처리해야 하며, 효율적으로 닉네임 정보를 관리해야 합니다.나의 풀이풀이 과정닉네임 관리:HashMap을 사용하여 사용자의 고유 ID에 대한 최신 닉네임을 저장합니다.명령이 "Enter" 또는 "Change"일 경우, 닉네임 정보를 업데이트합니다.최종 메시지 생성:명령이 "Enter"인 경우, "님이 들어왔습니다." 메시지를 추가합니다.명령이 "Leave"인 경우, "님이 나갔습니다." 메시지를 추가합니다.이 ..
[프로그래머스] 할인 행사 - 131127(Java)
·
알고리즘/Java
문제 URLhttps://school.programmers.co.kr/learn/courses/30/lessons/131127문제 설명고객이 원하는 상품과 수량이 주어질 때, 특정 날짜에 회원가입을 하면 연속된 10일 동안 원하는 상품을 모두 할인받을 수 있는 날짜의 총 일수를 구하는 문제입니다.나의 풀이import java.util.*;class Solution { public int solution(String[] want, int[] number, String[] discount) { int answer = 0; // 1. 원하는 상품과 개수를 HashMap에 저장 HashMap wantMap = new HashMap(); for (int i ..
[프로그래머스] 완주하지 못한 선수 - 42576(Java)
·
알고리즘/Java
문제 URLhttps://school.programmers.co.kr/learn/courses/30/lessons/42576문제 설명이 문제는 마라톤에 참가한 선수와 완주한 선수의 명단이 주어졌을 때, 완주하지 못한 선수를 찾아내는 것입니다.participant 배열은 참가자 명단을,completion 배열은 완주자 명단을 제공합니다.모든 참가자는 단 한 번씩만 완주하거나 실패하며, 한 명의 선수가 중복으로 참가할 수 있습니다.나의 풀이기본 풀이import java.util.*;class Solution { public String solution(String[] participant, String[] completion) { HashMap hashmap = new HashMap(); ..
[프로그래머스] 다리를 지나는 트럭 - 42583(Java)
·
알고리즘/Java
문제 URLhttps://school.programmers.co.kr/learn/courses/30/lessons/42583문제 설명다리 위에서 트럭들이 일정 시간 동안 다리를 건너는 상황을 시뮬레이션하는 문제입니다. 트럭은 다리의 길이를 넘지 않도록 동시에 다리를 건널 수 없으며, 다리의 최대 하중을 초과하지 않도록 트럭이 건너야 합니다. 각 트럭은 다리의 길이를 한 칸씩 지나갈 때마다 1초가 지나고, 트럭이 다리를 건너는 데 걸리는 시간은 트럭이 다리를 전부 건넌 후에 다른 트럭이 진입할 수 있게 됩니다.풀이이 문제는 큐(Queue) 자료구조를 사용하여 각 트럭의 진행 상황을 관리하고, 시간과 다리 위의 무게를 계산하는 방식으로 해결할 수 있습니다.다리 위 상태 업데이트: 각 트럭은 다리 위에서 진행..
[프로그래머스] 카드 뭉치 - 159994 (Java)
·
알고리즘/Java
문제 URLhttps://school.programmers.co.kr/learn/courses/30/lessons/159994문제 설명두 개의 카드 더미(cards1, cards2)와 목표 문자열 배열(goal)이 주어졌을 때, goal 배열의 각 문자열을 cards1과 cards2의 순서를 유지하면서 만들 수 있는지 판별하는 문제입니다. 각 카드 더미는 순서가 고정되어 있으며, goal 배열의 문자열 순서도 유지해야 합니다.나의 풀이1. 기본 풀이: 인덱스 활용각 카드 더미의 현재 위치를 나타내는 인덱스(idx1, idx2)를 활용해 순서대로 문자열을 비교합니다.goal의 각 문자열이 cards1이나 cards2의 현재 위치 문자열과 일치하면 해당 인덱스를 증가시킵니다.문자열이 일치하지 않으면 "No"..
[프로그래머스] 기능 개발 - 42586 (Java)
·
알고리즘/Java
문제 URLhttps://school.programmers.co.kr/learn/courses/30/lessons/42586문제 설명소프트웨어 개발 팀이 진행 중인 각 기능은 진도가 100%가 되어야 배포 가능합니다. 각 기능은 개발 속도가 다르며, 뒤에 있는 기능은 앞에 있는 기능이 배포될 때 함께 배포될 수 있습니다. 이때 각 배포마다 몇 개의 기능이 배포되는지를 계산하는 문제입니다.나의 풀이import java.util.*class Solution { public ArrayList solution(int[] progresses, int[] speeds) { ArrayList answer = new ArrayList(); ArrayDeque queue = new Arra..
[백준] 1158. 요세푸스 문제 (Java8) - ArrayDeque 활용
·
알고리즘/Java
문제 URLhttps://www.acmicpc.net/problem/1158문제 설명1번부터 N번까지 사람들을 원형으로 나열하고, K번째 사람을 제거합니다. 제거된 사람을 제외한 나머지 사람들이 다시 원형으로 나열되며, 이 과정을 반복합니다. 모든 사람이 제거될 때까지 진행하며, 제거된 순서를 출력하는 문제입니다.나의 풀이1. Queue활용import java.io.BufferedReader;import java.io.InputStreamReader;import java.util.*;public class Main { public static void main(String[] args) throws Exception { BufferedReader br = new BufferedReade..