본문 바로가기

프로그래머스18

(LEVEL 2)프로그래머스 - 연속된 부분 수열의 합 (JAVA) 투포인터 문제 입출력 예 접근방법 1. 투포인터를 사용해서 풀이 풀이. 1. answer를 길이 2만큼 선언해준다. 2. 투포인터로 돌아갈 lt, rt를 선언하고 k와 비교할 sum을 선언해준다. 3. 여기서 문제를 제대로 안읽어서 처음에 통과를 못했는데, 답이 여러개 일 때 길이가 짧은수열이 우선순위이고 길이가 동일한 길이의 수열이 여러개일 경우 가장 앞쪽(시작 인덱스가 작은 쪽) 수열을 찾는다.(이 조건을 만족시키기위해 수열의 길이를 큰값으로 선언) 4. rt를 sequence의 길이만큼 반복하며 더해주고, 수열의 합이 같으면서, 정답의 길이가 더 작을 때 수열의 인덱스를 정답으로 갱신시켜주고 길이 또한 갱신시켜준다. 5. 만약 rt를 더해준 값이 sum보다 크다면 같거나 작아질 때 까지 lt를 증가시키며 해.. 2023. 4. 17.
(LEVEL 2)프로그래머스 - 오픈채팅방 (JAVA) 문제 입출력 예 풀이. 1. record의 길이만큼 for문을 돌면서 temp에 띄어쓰기 별로 나눈 문자열들을 임시 저장한다. 2. 길이가 3일때만 ID별로 닉네임을 갱신한다( HashMap사용, Leave일땐 길이가 2) 3.다시 for문을 돌며 temp에 임시로 uid를 저장하고 저장해두었던HashMap에서 id별로 닉네임을 가져온다. 4. Enter / Leave 일때만 answer에 추가한다. 5. 마지막으로 return 자료형이 String[]이므로 answer.toArray를 사용해 리턴해준다. -> ArrayList를 사용한 이유는 처음 answer의 크기를 초기화할 때 record의 길이와는 다를수있다. (Change가 들어가면 다름.) 그래서 가변적인 List를 활용해 저장한다음 retu.. 2023. 4. 10.
(LEVEL 1)프로그래머스 - 대충 만든 자판 (JAVA) 문제 입출력 예 풀이. 1. 각 알파벳들의 최소 인덱스가 저장될 HashMap 선언 2. answer를 targets의 길이만큼 초기화 ( 처음에 keymap의 크기만큼 초기화해서 런타임에러가 났다.) 3. keymap의 길이 만큼 반복문을 돌고 이중 포문으로 각 원소들의 길이만큼 돌며 각 알파벳들의 최소 인덱스를 저장. (값이 있다면 그냥 비교하면 되지만 알파벳 이 첫 등장이라면 map에서 가져올수가 없어 getOrDefault로 101을 넣어줬다. - 원소의 최대길이가 100이어서) 4. 각 최소 인덱스를 다 저장한후에 targets의 길이만큼 똑같이 반복문을 돌며 sum에다가 저장. ( 단, 알파벳에 대한 인덱스가 없는 경우 sum에 -1을 넣고 안쪽 for문을 break 5. 바깥쪽 for문이 반.. 2023. 3. 1.
(LEVEL 2)프로그래머스 - 다리를 지나는 트럭(JAVA) 문제 입출력 예 풀이. 1. 선입선출(FIFO)의 구조를 가진 큐를 사용하여 다리위에 올라가있는 트럭들의 무게를 더해줄 변수 sum 선언 2. 큐가 비어있을 때 / 비어있지 않을 때로 나누어서 진행 2-1. 비어 있다면 q에 삽입후 시간 1초 증가 2-2. 큐에 들어간 트럭의 수(q의 사이즈) 가 다리 길이와 같다면 큐에서 빼주고 sum에서 빼줌 2-3. 트럭을 추가 했을 때 최대 무게를 초과 한다면 0을 삽입하고 시간 증가 2-4. 최대 무게 이내일 경우 q에 삽입후 시간 1초 증가 3. 마지막에 올라간 트럭이 시간이 지나간 시간이 더해지지 않고 종료 되기 때문에 다리길이만큼 시간을 더해준 값을 리턴. 코드 import java.util.*; class Solution { public int solut.. 2023. 2. 25.