본문 바로가기

알고리즘41

(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.
백준 4963번 섬의 개수(JAVA) - DFS 백준 4963번 https://www.acmicpc.net/problem/4963 4963번: 섬의 개수 입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스의 첫째 줄에는 지도의 너비 w와 높이 h가 주어진다. w와 h는 50보다 작거나 같은 양의 정수이다. 둘째 줄부터 h개 줄에는 지도 www.acmicpc.net 문제설명 지도의 크기를 입력받고, 1(땅), 0(바다) 로 구분지어진 값들을 입력받아 섬의 개수를 세는 프로그램 작성. 섬이란 가로, 세로 또는 대각선 까지 연결되어있는 사각형을 말한다. 지도의 크기 0, 0 을 입력받으면 종료. 접근 1. 지도의 크기 w,h를 입력 받고 지도를 초기화 하면서 방문여부인 visit도 초기화 해준다. 2. 입력받은 w,h를 통해 0,1을 입력 .. 2023. 2. 19.