본문 바로가기

알고리즘26

(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.
백준 1541번 잃어버린 괄호(JAVA) - 그리디 백준 1541번 https://www.acmicpc.net/problem/1541 1541번: 잃어버린 괄호 첫째 줄에 식이 주어진다. 식은 ‘0’~‘9’, ‘+’, 그리고 ‘-’만으로 이루어져 있고, 가장 처음과 마지막 문자는 숫자이다. 그리고 연속해서 두 개 이상의 연산자가 나타나지 않고, 5자리보다 www.acmicpc.net 문제설명 문자로된 식을 입력 받고 그 해당 식의 값이 최소로 만드는 괄호의 위치를 찾아서 계산 후에 최솟값을 출력한다. 접근 1. - 를 기준으로 문자열을 나눈다. 2. 나눠진 문자열들을 '+' 기준으로 나눈다음 각각 다 더한다. 3. 첫번째 값은 더해주고 나머지는 뺴주면서 최솟값으로 만든다. 코드 import java.io.*; import java.util.*; publi.. 2023. 2. 15.
(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.
(LEVEL 1)프로그래머스 - 로또의 최고 순위와 최저 순위(JAVA) 문제 입출력 예 풀이. 1. 크기만큼 반복문을 돌며 lottos에 저장된 값과 win_nums에 저장된값을 하나씩 비교하며 0의 개수, 일치하는 개수를 따로 저장. 2. 기존 로또와 다르게 등수는 1등-6개/2등-5개/3등-4개/4등-3개/5등-2개/그외 6등으로 이걸 식으로 계산해보면 (7 - 맞춘개수)를하면 등수가 된다. 예외로 맞춘개수가 없을경우 최저순위는 6등이므로 min(7-맞춘개수,6)을 통해 최저순위를 6등으로 치환해준다. 3. 맞춘개수와 0의 개수에 따라서 최고순위(7-맞춘개수+0의개수) 와 최저순위(7-맞춘개수) 를 따로 저장, 코드 class Solution { public int[] solution(int[] lottos, int[] win_nums) { // 1등-6개 2등-5개 3.. 2023. 1. 18.