전체 글 795

백준 2304번 창고 다각형 (JAVA)

https://www.acmicpc.net/problem/2304 2304번: 창고 다각형 첫 줄에는 기둥의 개수를 나타내는 정수 N이 주어진다. N은 1 이상 1,000 이하이다. 그 다음 N 개의 줄에는 각 줄에 각 기둥의 왼쪽 면의 위치를 나타내는 정수 L과 높이를 나타내는 정수 H가 한 개의 www.acmicpc.net 저는 스택 개념을 이용해 문제를 해결하였습니다. 저는 왼쪽, 오른쪽에서 각각 진행하며, 만약 이전의 높이보다 크다면 결과값에 너비 * 이전 높이를 더해주었습니다. 그렇게 되면 제일 높은 값의 지붕 값은 고려되지 않습니다. 그래서 왼쪽 오른쪽에서 진행하면서 마지막의 인덱스를 저장해 놓고 그 사이 값 * 해당 높이를 결과값에 더해주어 문제를 해결하였습니다. package BOJ.etc..

알고리즘 2023.07.24

프로그래머스 단어 변환2(JAVA)

https://school.programmers.co.kr/learn/courses/30/lessons/43163 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 저는 bfs를 통해 문제를 해결하였습니다. 현재 단어에서 words에 있는 단어를 확인하고 현재 단어와 한 단어만 차이나면 bfs에 넣어 문제를 해결하였습니다. import java.util.*; class Solution { public int solution(String begin, String target, String[] words) { Set set = new HashSet(); for(..

알고리즘 2023.07.23

백준 27497번 알파벳 블록 (JAVA)

https://www.acmicpc.net/problem/27497 27497번: 알파벳 블록 첫째 줄에 버튼을 누른 횟수 $N$이 주어진다. $(1 \leq N \leq 1\,000\,000)$ 둘째 줄부터 $N$개의 줄에는 버튼을 누른 순서대로 누른 버튼에 대한 정보를 주며 아래와 같은 형식으로 주어진다. 1 c : 문자열 www.acmicpc.net 저는 스택과 deque를 통해 문제를 해결하였습니다. 입력에 따라 deque를 이용해 앞 또는 뒤에 문자를 추가였고, 명령 타입을 stack에 넣었습니다. 3인 경우 stack에서 명령 타입을 빼서 앞에서 빼야하는지 뒤에 빼야하는지를 확인후 그에 맞게 deque 에서 빼주었습니다. package BOJ.etc; import java.awt.print.P..

알고리즘 2023.07.22

프로그래머스 2xn타일링 (JAVA)

https://school.programmers.co.kr/learn/courses/30/lessons/12900 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 저는 DP를 이용하여 문제를 해결하였습니다. 1과 2는 미리 초기화 시켜주었습니다. dp[depth] = (dfs(depth-1,dp) + dfs(depth-2,dp)) 이렇게 공식이 나온 이유는 세로로 하나 넣으면 한칸만 차지하고, 가로로 2개 넣으면 2칸 차지하기 때문입니다. class Solution { private static final int LIMIT = 1_000_000_007; p..

알고리즘 2023.07.21

프로그래머스 짝지어 제거하기 (JAVA)

https://school.programmers.co.kr/learn/courses/30/lessons/12973 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 저는 스택을 이용해 문제를 해결하였습니다. 스택을 통해 이전의 문자를 저장하고 현재 문자와 스택의 맨 위에 있는 값과 같다면 빼주고 같지 않다면 스택에 넣어주었습니다. 마지막으로 스택이 비어있는지를 판단하고 결과를 리턴하였습니다. import java.util.*; class Solution { private static final int SUCCESS = 1; private static fina..

알고리즘 2023.07.20

프로그래머스 두 큐 합 같게 만들기(JAVA)

https://school.programmers.co.kr/learn/courses/30/lessons/118667 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 저는 투 포인트를 통해 문제를 해결하였습니다. 먼저 두 큐의 총 합을 구하고 이 값이 짝수인지 판단하였습니다. 짝수가 되지 않는다면, 합을 같게 나눌 수 없기에 바로 -1을 리턴하였습니다. 그 다음은 두 큐를 하나로 합치면서 첫 큐의 합을 구하였습니다. 이제 투 포인트를 0, 한 큐의 사이즈로 잡았습니다. (첫 큐의 합을 구하였기에 이렇게 하였습니다.) 여기서 합이 두 큐의 총합/2보다 작다면 ..

알고리즘 2023.07.19

프로그래머스 연속된 부분 수열의 합 (JAVA)

https://school.programmers.co.kr/learn/courses/30/lessons/178870 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 저는 투 포인트를 이용해 문제를 해결하였습니다. 투 포인트를 통해 그 사이의 합을 구하고 그 값이 k라면 answer과 비교하여 answer를 초기화해주었습니다. class Solution { public int[] solution(int[] sequence, int k) { int[] answer = null; int size = sequence.length; int startIndex = 0..

알고리즘 2023.07.18

프로그래머스 완주하지 못한 선수 (JAVA)

https://school.programmers.co.kr/learn/courses/30/lessons/42576 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 저는 Map을 통해 문제를 해결하였습니다. Map을 통해 이름에 해당하는 선수가 몇명인는지 파악 후 완주한 선수는 숫자를 줄였습니다. 마지막으로 Map의 키를 돌면서 0이 아닌 값이 있는지 확인하고 그 값을 답으로 도출하였습니다. import java.util.*; class Solution { public String solution(String[] participant, String[] com..

알고리즘 2023.07.17

백준 18511번 큰 수 구성하기 (JAVA)

https://www.acmicpc.net/problem/18511 18511번: 큰 수 구성하기 첫째 줄에 N, K의 원소의 개수가 공백을 기준으로 구분되어 자연수로 주어진다. (10 ≤ N ≤ 100,000,000, 1 ≤ K의 원소의 개수 ≤ 3) 둘째 줄에 K의 원소들이 공백을 기준으로 구분되어 주어진다. 각 www.acmicpc.net 저는 dfs를 통해 문제를 해결하였습니다. 현재 숫자에서 10을 곱하고 집합k의 원소를 하나를 더하고 이 값이 n보다 작다면 dfs를 진행하여 문제를 해결하였습니다. package BOJ.dfs; import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.Arrays; impo..

알고리즘 2023.07.16

프로그래머스 도둑질 (JAVA)

https://school.programmers.co.kr/learn/courses/30/lessons/42897 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 저는 DP를 통해 문제를 해결하였습니다. dp1는 첫번째 털고, 마지막은 털지 않도록 하였습니다. dp2는 첫번째를 안 털고, 마지막은 털 수 있도록 하여 문제를 해결하였습니다. package Programmers.ETC; public class 도둑질 { public int solution(int[] money) { int answer = 0; int[] dp1 = new int[money.le..

알고리즘 2023.07.15