본문 바로가기

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

(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)프로그래머스 - 2 x n 타일링 (JAVA) 문제 입출력 예 풀이. 숫자가 커질수록 규칙이 있을것 같아서 직접 1부터 5정도까지만 그려보며 구했다. n=1 -> 1 n=2 -> 2 n=3 -> 3 n=4 -> 5 n=5 -> 8 ... 5까지 그려보며 수열을 파악해보니 피보나치 수열인것을 파악할 수 있었다. 코드 class Solution { public int solution(int n) { int answer = 0; int []arr = new int[n+1]; arr[1] = 1; arr[2] = 2; for(int i=3;i 2023. 2. 25.
(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.
(LEVEL 2)프로그래머스 - 카펫(JAVA) 문제 입출력 예 풀이. 1. 노란색 격자가 가운데 있으려면 가로, 세로가 최소 3이상이어야 한다. ( i = 3부터 시작) 2. 3부터 시작하며 brown + yellow(sum) 의 약수를 구한다. 3. 약수이면서 3이상 일때, 각 가로, 세로의 -2 씩 한 값이 yellow랑 같을 때 answer에 넣어준다. 코드 class Solution { public int[] solution(int brown, int yellow) { int[] answer = new int[2]; int sum = brown+yellow; for(int i=3;i=3){ int col = Math.max(i,j); int row = Math.min(i,j); int center = (col-2) * (row-2); if(c.. 2023. 2. 9.