분류 전체보기 795

프로그래머스 제일 작은 수 제거하기 (JAVA)

https://school.programmers.co.kr/learn/courses/30/lessons/12935 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 저는 구현을 통해 문제를 해결하였습니다. 제일 작은 값의 인덱스를 찾고 이 값을 뺴고 새로운 배열에 넣어주었습니다. class Solution { private static final int[] NOT_FOUND = {-1}; public int[] solution(int[] arr) { int size = arr.length; if(size == 1){ return NOT_FOUND; } int..

알고리즘 2022.09.20

백준 14923번 미로 탈출 (JAVA)

https://www.acmicpc.net/problem/14923 14923번: 미로 탈출 홍익이는 사악한 마법사의 꾐에 속아 N x M 미로 (Hx, Hy) 위치에 떨어졌다. 다행히도 홍익이는 마법사가 만든 미로의 탈출 위치(Ex, Ey)를 알고 있다. 하지만 미로에는 곳곳에 마법사가 설치한 벽이 www.acmicpc.net 저는 BFS를 통해 문제를 해결하였습니다. BFS를 통해 시작점부터 시작하여 끝점까지 가는지 확인하였습니다. 다른 BFS와 다르게 좌표와 지팡이의 사용유무를 큐에 넣었고 사용 유무에 따라 벽을 뚫고 갈 수 있는지를 판단하여 해결하였습니다. package BOJ.bfs; import java.io.BufferedReader; import java.io.InputStreamReade..

알고리즘 2022.09.19

프로그래머스 H-index(JAVA)

https://school.programmers.co.kr/learn/courses/30/lessons/42747 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 저는 구현을 통해 문제를 해결하였습니다. 먼저 각각의 숫자가 몇번 나왔는지를 확인하였고, 전체 몇개인지를 확인하였습니다. 큰 숫자부터 더해가면서 합이 현재 숫자보다 크고, 전체 사이즈 - 현재 합 이 현재 숫자 이하라면 결과값을 초기화하고 바로 반복문을 빠져나갔습니다. class Solution { private static final int INF = 10_000; public int solut..

알고리즘 2022.09.18

백준 13422번 도둑 (JAVA)

https://www.acmicpc.net/problem/13422 13422번: 도둑 입력 데이터는 표준 입력을 사용한다. 입력은 T개의 테스트 데이터로 구성된다. 입력의 첫째 줄에 테스트 케이스의 개수를 나타내는 자연수 T가 주어진다. 각각의 테스트 케이스의 첫째 줄에 마 www.acmicpc.net 저는 슬라이딩 윈도우를 통해 문제를 해결하였습니다. 입력 배열을 m-1개 더 늘려 n개 뒤에 m-1개 만큼 입력을 다시 넣었습니다. 슬라이딩 윈도우를 통해 m 간격의 합을 구하고 이 값이 k보다 작다면 결과값을 늘렸습니다. 하지만, n과m이 같으면 이렇게 구하면 중복이 나오기 때문에 n == m일때 예외 처리하여 문제를 해결하였습니다. package BOJ.twopoint; import java.io.B..

알고리즘 2022.09.17

백준 2624번 동전 바꿔주기 (JAVA)

https://www.acmicpc.net/problem/2624 2624번: 동전 바꿔주기 명보네 동네 가게의 현금 출납기에는 k 가지 동전이 각각 n1, n2, … , nk개 씩 들어있다. 가게 주인은 명보에게 T원의 지폐를 동전으로 바꿔 주려고 한다. 이때, 동전 교환 방법은 여러 가지가 있을 www.acmicpc.net 저는 DP를 통해 문제를 해결하였습니다. DP[돈][index]를 통해 해당 돈으로 해당 인덱스의 돈까지 사용하여 몇가지의 경우가 있는지를 저장하여 똑같은 계산을 다시 하지 않도록 하였습니다. package BOJ.dp; import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.Arrays; ..

알고리즘 2022.09.16

백준 11058번 크리보드 (JAVA)

https://www.acmicpc.net/problem/11058 11058번: 크리보드 N = 3인 경우에 A, A, A를 눌러 A 3개를 출력할 수 있다. N = 7인 경우에는 A, A, A, Ctrl-A, Ctrl-C, Ctrl-V, Ctrl-V를 눌러 9개를 출력할 수 있다. N = 11인 경우에는 A, A, A, Ctrl-A, Ctrl-C, Ctrl-V, Ctrl-V, Ctrl-A, Ctrl-C, Ctrl www.acmicpc.net 저는 DP를 이용해 문제를 해결하였습니다. DP를 통해 이전에 계산했던 값을 다시 계산하지 않고 바로 리턴하도록 하였습니다. package BOJ.dp; import java.io.BufferedReader; import java.io.InputStreamRead..

알고리즘 2022.09.15

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

https://school.programmers.co.kr/learn/courses/30/lessons/43163 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 저는 BFS를 통해 해당 문제를 해결하였습니다. BFS를 통해 begin부터 target까지 갈 수 있는지를 확인하였습니다. words에 있는 것만으로 단어를 변환해야 하므로, 현재 문자열과 words의 단어들과 비교하여 하나만 다르다면 해당 단어로 진행할 수 있도록 구현하였습니다. package Programmers.ETC; import java.util.HashSet; import java.u..

알고리즘 2022.09.14

프로그래머스 야근 지수 (JAVA)

https://school.programmers.co.kr/learn/courses/30/lessons/12927 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 저는 우선순위 큐를 통해 문제를 해결하였습니다. 제곱의 합은 낮을 수록 낮아지기 때문에 높은 수를 낮추도록 구현하였습니다. 우선순위 큐를 통해 높은 수를 꺼내고 이 값이 0 보다 크다면 1 줄이고 다시 우선순위 큐에 넣습니다. 위의 방법을 n번 동안 진행하고 우선순위 큐에 있는 값을 전부 꺼내어 합하여 해결하였습니다. import java.util.*; class Solution { public ..

알고리즘 2022.09.13

프로그래머스 카펫 (JAVA)

https://school.programmers.co.kr/learn/courses/30/lessons/42842 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 저는 수학식을 정리하고 완전탐색을 통해 문제를 해결하였습니다. 먼저 세로를 n, 가로를 m이라 한다면, brown = 2*n + 2*m - 4 yellow = n*m - 2*n - 2*m + 4 => yellow = n*m - (2*n + 2*m - 4) yellow + brown = n*m 이라는 식으로 정리할 수 있습니다. 저는 완탐을 돌면서 첫번째 식과 세번째 식에 맞는지를 확인하고 맞다면 ..

알고리즘 2022.09.12

프로그래머스 구명보트 (JAVA)

https://school.programmers.co.kr/learn/courses/30/lessons/42885 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 저는 투포인트를 통해 문제를 해결하였습니다. 한 구명보트에 두명 태울 수 있고, limit보다 크면 안되기 때문에 가장 작은 것과 가장 큰 것을 태워보고 안된다면 결과값을 늘리고, 그 다음 큰 애와 비교해 나가면 됩니다. 투포인트를 통해 가장 작은 것과 가장 큰 것을 합하여 이것이 limit보다 작으면 작은 인덱스는 늘리고, 큰 인덱스는 줄이고, 결과값을 늘렸습니다. 크다면 큰 인덱스만 줄이고 결..

알고리즘 2022.09.11