프로그래머스
[프로그래머스] 요격 시스템
프로그래머스_요격시스템 Level2 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 초기 풀이 방법 (통과 ❌) targets의 값끼리 중복되는 최소 구간을 저장하기 위해 duplRangeList 생성 targets의 값을 하나 씩 확인하며 duplRangeList와 겹치는 구간이 있으면 최소 구간으로 갱신 duplRangeList와 겹치는 구간이 없으면 target값을 duplRangeList에 추가 최종적으로 duplRangeList의 길이 반환 초기 풀이 방법 코드(통과 ❌) import java.util.ArrayList; class Solution..
[프로그래머스] 다리를 지나는 트럭
[풀이방법] 1. 대기중인 트럭이 순서대로 들어있는 큐 wait 생성 = 대기중인 트럭 2. 다리의 길이만큼 0이 들어있는 큐 bridge 생성 = 다리위 트럭 3. 다리위의 트럭이 모두 나갈 때까지 다음을 반복 3-1) 시간++ 3-2) 다리위의 트럭을 하나 빠져나가게함 (만약 트럭이 없다면 0이 빠져나감) -> 현재 다리위 트럭무게 = 다리위의 트럭무게 - 빠져나간 트럭 무게 3-3) 대기중인 트럭이 존재할 경우 트럭을 더 올릴 수 있으면 다음 트럭을, 아니면 0을 추가 -> 현재 다리위 트럭무게 = 다리위의 트럭무게 + 올린 트럭 무게 [풀이코드_Java] import java.util.LinkedList; import java.util.Queue; class Solution { public int..
[프로그래머스] [1차] 캐시
https://programmers.co.kr/learn/courses/30/lessons/17680?language=python3 cache에는 참조한 순서대로 city가 저장된다. (가장 최근에 참조한 city는 맨 뒤에 존재!) 2. 다음과 같은 과정을 cities배열에 돌며 반복한다. 2-1) cache에 현재 city의 값이 존재 하는 경우 -> 실행시간 1 증가 -> cache에서 가장 최근에 참조한 city는 cache의 마지막 위치에 존재해야 함 따라서 cache에서 참조한 city를 제거하고 다시 마지막 위치에 추가 2-2) cache에 현재 city의 값이 존재 하지 않는 경우 -> 실행시간 5 증가 -> cache에 city 추가 -> cache의 크기가 허용된 크기보다 크다면 cac..
[프로그래머스] 오픈채팅방
풀이 방법 1. HashMap을 사용하여 아이디별 최종닉네임을 저장할 변수 nickname 선언 (HashMap은 key, value로 이루어진 자료구조) 2. record의 모든 값들을 반복하며 들어오는 경우와 닉네임을 변경하는 경우, 각 아이디별 닉네임을 갱신 3. 메세지를 작성할 ArrayList 선언 이때, 배열이 아닌 ArrayList를 사용한 이유는 나갈경우에는 메세지를 작성하지 않아 record 의 길이와 메세지가 들어갈 배열의 길이가 같지 않기 때문임 사실 변수를 사용하면 해결 될 문제지만 코드가 길어지고 가독성이 좋지 않을것으로 판단되어 ArrayList사용 4. record의 모든 값들을 반복하며 들어오는 경우와 나가는 경우, 닉네임 변수에서 키로 값을 가져와 닉네임 + 메세지를 작성 ..
![[프로그래머스] 구명보트](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbprUC0%2FbtrDYesAF7G%2Fe5o4EBWCdWOl9kTk9IiHj1%2Fimg.png)
[프로그래머스] 구명보트
풀이방법 보트의 개수를 최소로 만들기 위해서는 가능하다면 1개의 보트에 2명씩 태워야한다! 즉, 몸무게가 많이 나가는 사람을 태울 경우에 몸무게가 적은 사람들 중 같이 태울 수 있는 사람을 찾으면 유리할 것 같다고 생각하여 몸무게가 담긴 배열을 정렬하고 투 포인터를 사용했다 :) 1. 몸무게가 담긴 배열 오름차순 정렬 2. 아직 보트에 타지 않은 사람들 중 몸무게가 가장 적은 사람을 가리키는 포인터 left, 몸무게가 가장 많은 사람을 가리키는 포인터 right 선언 3. left가 가르키는 몸무게와 right가 가르키는 몸무게의 합이 limt 이하라면 그 두명을 태우고 left는 다음으로 몸무게가 적게 나가는 사람, right는 다음으로 몸무게가 많이 나가는 사람을 가르키도록 움직인다. 4. left..