분류 전체보기 795

백준 2015번 수들의 합4 (JAVA)

https://www.acmicpc.net/problem/2015 2015번: 수들의 합 4 첫째 줄에 정수 N과 K가 주어진다. (1 ≤ N ≤ 200,000, |K| ≤ 2,000,000,000) N과 K 사이에는 빈칸이 하나 있다. 둘째 줄에는 배열 A를 이루는 N개의 정수가 빈 칸을 사이에 두고 A[1], A[2], ..., A[N]의 순서로 www.acmicpc.net 저는 Map을 통해 처음부터 현재 인덱스까지의 합을 key로 저장하고 value로 합의 개수를 저장하였습니다. 그리고 현재까지의 합을 저장하는 변수(sum)을 가지고 map에 sum-k가 있는지를 확인합니다. sum - (sum-k) = k이기 때문에 sum-k를 map에서 찾습니다. package BOJ.etc; import j..

알고리즘 2022.07.02

백준 17281번 ⚾ (JAVA)

https://www.acmicpc.net/problem/17281 17281번: ⚾ ⚾는 9명으로 이루어진 두 팀이 공격과 수비를 번갈아 하는 게임이다. 하나의 이닝은 공격과 수비로 이루어져 있고, 총 N이닝 동안 게임을 진행해야 한다. 한 이닝에 3아웃이 발생하면 이닝이 종 www.acmicpc.net 저는 해당 문제를 DFS를 이용해 문제를 해결하였습니다. DFS를 통해 순서를 정하고 이를 통해 각각의 이닝에서 몇점의 점수를 받아서 결과적으로 몇점을 받는지 계산하고 이에 대한 최대값을 구하였습니다. package BOJ.bruteforce; import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.StringT..

알고리즘 2022.07.01

프로그래머스 등굣길 (JAVA)

https://programmers.co.kr/learn/courses/30/lessons/42898 코딩테스트 연습 - 등굣길 계속되는 폭우로 일부 지역이 물에 잠겼습니다. 물에 잠기지 않은 지역을 통해 학교를 가려고 합니다. 집에서 학교까지 가는 길은 m x n 크기의 격자모양으로 나타낼 수 있습니다. 아래 그림은 m = programmers.co.kr 저는 해당 문제를 DP를 이용하여 문제를 해결하였습니다. DP를 통해 이전에 계산한 값을 다시 계산하지 않도록 하였습니다. 혹시 런타임에러가 나오신다면 물이 잠긴 지역의 좌표가 (가로,세로) 입니다. (저는 이것때문에 계속 런타임에러를 일으켰습니다.) import java.util.*; class Solution { private static fina..

알고리즘 2022.06.30

프로그래머스 최댓값과 최솟값 (JAVA)

https://programmers.co.kr/learn/courses/30/lessons/12939 코딩테스트 연습 - 최댓값과 최솟값 문자열 s에는 공백으로 구분된 숫자들이 저장되어 있습니다. str에 나타나는 숫자 중 최소값과 최대값을 찾아 이를 "(최소값) (최대값)"형태의 문자열을 반환하는 함수, solution을 완성하세요. 예를 programmers.co.kr 저는 split를 통해 띄어쓰기를 기준으로 문자열을 자르고 이를 각각 int 타입으로 변경하였습니다. 다음으로 오름차순으로 정렬하고 첫번째와 마지막의 것을 결과에 넣었습니다. import java.util.*; import java.util.function.Function; import java.util.stream.Collectors..

알고리즘 2022.06.29

프로그래머스 피보나치 수 (JAVA)

https://programmers.co.kr/learn/courses/30/lessons/12945 코딩테스트 연습 - 피보나치 수 피보나치 수는 F(0) = 0, F(1) = 1일 때, 1 이상의 n에 대하여 F(n) = F(n-1) + F(n-2) 가 적용되는 수 입니다. 예를들어 F(2) = F(0) + F(1) = 0 + 1 = 1 F(3) = F(1) + F(2) = 1 + 1 = 2 F(4) = F(2) + F(3) = 1 + 2 = 3 F(5) = F(3) + F(4) = programmers.co.kr 저는 해당 문제를 DP를 이용하여 문제를 해결하였습니다. DP를 통해 이전에 계산한 값이라면 바로 그 값을 리턴하여 중복적인 계산을 하지 않도록 하였습니다. class Solution { ..

알고리즘 2022.06.28

백준 1541번 잃어버린 괄호 (JAVA)

https://www.acmicpc.net/problem/1541 1541번: 잃어버린 괄호 첫째 줄에 식이 주어진다. 식은 ‘0’~‘9’, ‘+’, 그리고 ‘-’만으로 이루어져 있고, 가장 처음과 마지막 문자는 숫자이다. 그리고 연속해서 두 개 이상의 연산자가 나타나지 않고, 5자리보다 www.acmicpc.net 저는 해당 문제를 그리디적으로 문제를 해결하였습니다. 저는 +를 먼저 연산하고 -를 나중에 연산하여 문제를 해결하였습니다. 이후 첫번째 값이면 결과값을 초기화하고, 첫번째 값이 아니라면 결과값에서 각각의 값을 뺴 결과를 도출하였습니다. package BOJ.greedy; import java.io.BufferedReader; import java.io.InputStreamReader; imp..

알고리즘 2022.06.27

프로그래머스 짝수와 홀수 (JAVA)

https://programmers.co.kr/learn/courses/30/lessons/12937 코딩테스트 연습 - 짝수와 홀수 정수 num이 짝수일 경우 "Even"을 반환하고 홀수인 경우 "Odd"를 반환하는 함수, solution을 완성해주세요. 제한 조건 num은 int 범위의 정수입니다. 0은 짝수입니다. 입출력 예 num return 3 "Odd" 4 "Even" programmers.co.kr 저는 모듈러 연산을 통해 짝수인지 홀수인지를 판단하여 결과를 도출하였습니다. class Solution { private static final String ODD = "Odd"; private static final String EVEN = "Even"; public String solution..

알고리즘 2022.06.26

프로그래머스 가운데 글자 가져오기 (JAVA)

https://programmers.co.kr/learn/courses/30/lessons/12903 코딩테스트 연습 - 가운데 글자 가져오기 단어 s의 가운데 글자를 반환하는 함수, solution을 만들어 보세요. 단어의 길이가 짝수라면 가운데 두글자를 반환하면 됩니다. 재한사항 s는 길이가 1 이상, 100이하인 스트링입니다. 입출력 예 s ret programmers.co.kr 저는 글자 수가 짝수인지 홀수인지에 따라서 s에서 글자 수를 몇개 가져올 것인지를 확인였습니다. substring을 통해 해당 글자의 개수 만큼 가운데에서 가져왔습니다. class Solution { public String solution(String s) { String answer = ""; int size = s.l..

알고리즘 2022.06.25

프로그래머스 가장 먼 노드 (JAVA)

https://programmers.co.kr/learn/courses/30/lessons/49189 코딩테스트 연습 - 가장 먼 노드 6 [[3, 6], [4, 3], [3, 2], [1, 3], [1, 2], [2, 4], [5, 2]] 3 programmers.co.kr 저는 BFS를 통해 해당 문제를 해결하였습니다. 1부터 BFS를 진행하여 가장 먼 노드가 몇개인지를 판별하였습니다. time을 통해 각각의 노드가 1부터 시작해서 얼마나 떨어져있는지를 판단하였고, 가장 먼 노드의 개수를 세는 변수 result는 곧 size가 0이 아니면서 time이 가장 클 때의 Queue의 사이즈입니다. import java.util.*; class Solution { private static final int..

알고리즘 2022.06.24

프로그래머스 [3차] 압축 (JAVA)

https://programmers.co.kr/learn/courses/30/lessons/17684 코딩테스트 연습 - [3차] 압축 TOBEORNOTTOBEORTOBEORNOT [20, 15, 2, 5, 15, 18, 14, 15, 20, 27, 29, 31, 36, 30, 32, 34] programmers.co.kr 저는 Map을 이용해 문제를 해결하였습니다. Map을 통해 문제에서의 사전을 구현하였고, Map에서 못 찾을때까지 subString을 만들면서 index를 찾아나가 문제를 해결하였습니다. import java.util.*; class Solution { public int[] solution(String msg) { int NUMBER = 1; Map dic = new HashMap(..

알고리즘 2022.06.23