전체 글 795

프로그래머스 문자열 겹쳐쓰기 (JAVA)

https://school.programmers.co.kr/learn/courses/30/lessons/181943 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 저는 구현을 통해 문제를 해결하였습니다. substring을 통해 0부터 s까지 그리고 overwrite_string 또 s+overwrite_string의 길이 부터 my_string의 길이까지 를 합쳐 결과를 구하였습니다. class Solution { public String solution(String my_string, String overwrite_string, int s) { Str..

알고리즘 2023.06.24

백준 2839번 설탕 배달 (JAVA)

https://www.acmicpc.net/problem/2839 2839번: 설탕 배달 상근이는 요즘 설탕공장에서 설탕을 배달하고 있다. 상근이는 지금 사탕가게에 설탕을 정확하게 N킬로그램을 배달해야 한다. 설탕공장에서 만드는 설탕은 봉지에 담겨져 있다. 봉지는 3킬로그 www.acmicpc.net 저는 구현을 통해 문제를 해결했습니다. 먼저 5로 나눌 수 있을수록 봉지가 적어지기 때문에 먼저 n 을 5로 나누고 0까지 for문을 돌면서 3으로 나눠지는지를 확인하여 문제를 해결하였습니다. package BOJ.dp; import java.io.BufferedReader; import java.io.InputStreamReader; public class BOJ_2839 { public static vo..

알고리즘 2023.06.23

프로그래머스 베스트앨범 (JAVA)

https://school.programmers.co.kr/learn/courses/30/lessons/42579 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 저는 해시와 우선순위 큐를 이용해 문제를 해결했습니다. 해시를 통해 각 장르의 점수와 장르의 번호를 붙여 저장하였고, 각 장르별로 우선순위 큐를 만들고 가장 큰 값 또는 값이 같다면 번호가 작은 값을 먼저 나오도록 하였습니다. 또, 장르별 점수를 우선순위 큐에 넣고 가장 큰 점수가 먼저 나오게 하여 해당 장르의 우선순위 큐에서 2개씩 꺼내도록 구현하여 문제를 해결하였습니다. import java...

알고리즘 2023.06.22

백준 6146번 신아를 만나러 (JAVA)

https://www.acmicpc.net/problem/6146 6146번: 신아를 만나러 키파는 신아를 만나러 아침 일찍(무려 6시에!) 일어났다. 간밤에 거센 비가 내려서 새로 산 장화를 신고 (0, 0)에 있는 집을 나선 키파는 무려 N(1 ≤ N ≤ 104)개의 웅덩이가 있는 것을 보고 놀랐다. www.acmicpc.net 저는 BFS를 통해 문제를 해결했습니다. 음수의 좌표는 500을 더해 음수를 없애고 좌표를 표시하여 문제를 해결했습니다. package BOJ.bfs; import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.LinkedList; import java.util.Queue; import j..

알고리즘 2023.06.21

백준 21937번 작업 (JAVA)

https://www.acmicpc.net/problem/21937 21937번: 작업 민상이가 작업할 개수 $N$와 작업 순서 정보의 개수 $M$이 공백으로 구분되어 주어진다. 두 번째줄부터 $M + 1$ 줄까지 작업 $A_i$와 작업 $B_i$가 공백으로 구분되어 주어진다. 이때 두 값의 의미는 작 www.acmicpc.net 저는 dfs를 통해 문제를 해결했습니다. 저는 방향을 반대로 하는 그래프를 그리고 dfs로 탐색하고 어디어디 탐색했는지를 체크하여 답을 구하였습니다. package BOJ.dfs; import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.LinkedList; import java.util...

알고리즘 2023.06.20

백준 11403번 경로 찾기 (JAVA)

https://www.acmicpc.net/problem/11403 11403번: 경로 찾기 가중치 없는 방향 그래프 G가 주어졌을 때, 모든 정점 (i, j)에 대해서, i에서 j로 가는 길이가 양수인 경로가 있는지 없는지 구하는 프로그램을 작성하시오. www.acmicpc.net 저는 플루이드 워샬을 통해 문제를 해결했습니다. 플루이드 워샬을 통해 각각의 지점에 연결할 수 있는지를 판단하였습니다. package BOJ.etc; import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.StringTokenizer; import java.util.function.Function; public class BOJ_114..

알고리즘 2023.06.19

백준 25634번 전구 상태 뒤집기 (JAVA)

https://www.acmicpc.net/problem/25634 25634번: 전구 상태 뒤집기 $N$개의 전구가 일렬로 세워져 있다. 전구는 켜져 있을 수도 있고 꺼져 있을 수도 있다. 만약 $i$번째 전구가 켜져 있다면 그 전구의 밝기는 $a_i$이다. 연우는 $N$개의 전구 중 연속한 전구를 한 개 www.acmicpc.net 저는 구현을 통해 문제를 해결했습니다. 앞에서부터 뒤집었을 때 합을 구하였습니다. 이때 음수라면 0으로 다시 초기화를 하고 아니라면 이 값들의 최대를 구하였습니다. 마지막으로 최대값이 0이라는 것은 모두 켜져있다고 판단하여 가장 작은 전구 값을 빼서 답을 구하고, 아니라면 켜져있는 전구의 합에서 max를 더해주어 답을 구하였습니다. package BOJ.etc; impor..

알고리즘 2023.06.18

백준 28107번 회전초밥 (JAVA)

https://www.acmicpc.net/problem/28107 28107번: 회전초밥 회전 초밥 가게에 $N$명의 손님이 있고, 요리사는 $M$개의 초밥을 순서대로 만든다. 요리사가 초밥을 만들 경우, $1$번 손님부터 $N$번 손님의 순서대로 그 초밥을 받게 된다. 만약 먼저 초밥을 받는 www.acmicpc.net 저는 큐를 통해 문제를 해결했습니다. 각각의 스시번호에 따라 큐를 만들었고, 앞 번호를 먼저 넣고 스시가 나올 때 마다 해당하는 큐에서 꺼내서 해당하는 사람의 개수를 늘려 문제를 해결했습니다. 처음에는 Map을 이용해 문제를 해결하려고 했지만, 시간초과가 나왔습니다. package BOJ.etc; import java.io.BufferedReader; import java.io.Inp..

알고리즘 2023.06.17

백준 16469번 소년 점프 (JAVA)

https://www.acmicpc.net/problem/16469 16469번: 소년 점프 첫째 줄에 미로의 행과 열의 크기를 나타내는 자연수 R과 C가 주어진다. (2 ≤ R, C ≤ 100) 다음 R줄에 걸 쳐 길이 C로 이루어진 각 줄의 미로의 정보가 공백 없이 주어진다. 숫자 0은 이동 가능한 www.acmicpc.net 저는 BFS를 통해 문제를 해결했습니다. 각각의 사람들이 그 자리에 멈출 수도 있고, 사방탐색을 할 수 있기 때문에 각각의 사람들이 각각 지점에 가는 최소시간을 BFS를 통해 구하고 이 값들의 최대 값의 최소값을 구하였습니다. 그리고 그 값과 같은 값들의 개수를 찾았습니다. package BOJ.bfs; import java.io.BufferedReader; import jav..

알고리즘 2023.06.16

백준 13424번 비밀 모임 (JAVA)

https://www.acmicpc.net/problem/13424 13424번: 비밀 모임 입력 데이터는 표준 입력을 사용한다. 입력은 T개의 테스트 데이터로 구성된다. 입력의 첫 번째 줄에 테스트 케이스의 개수를 나타내는 자연수 T가 주어진다. 각 테스트 케이스의 첫째 줄에는 방 www.acmicpc.net 저는 다익스트라를 통해 문제를 해결했습니다. 각각의 친구에서 다익스트라를 통해 각 지점에 대한 최단거리를 찾고 이 값들을 전부 더해주었습니다. 각 점에서 각 친구들에게 가는 최단거리를 찾을 수 있었지만, K가 N보다 같거나 작기 때문에 친구에서 찾는 것이 조금더 효율적이라고 생각했습니다. package BOJ.etc; import java.io.BufferedReader; import java.i..

알고리즘 2023.06.15