전체 글 795

백준 14495번 피보나치 비스무리한 수열 (JAVA)

https://www.acmicpc.net/problem/14495 14495번: 피보나치 비스무리한 수열 피보나치 비스무리한 수열은 f(n) = f(n-1) + f(n-3)인 수열이다. f(1) = f(2) = f(3) = 1이며 피보나치 비스무리한 수열을 나열하면 다음과 같다. 1, 1, 1, 2, 3, 4, 6, 9, 13, 19, ... 자연수 n을 입력받아 n번째 피보 www.acmicpc.net 저는 DP를 이용해 문제를 해결하였습니다. 피보나치 수열을 풀때와 같지만, 1 2 3 만 다르기 때문에 이 부분만 변경하여 문제를 해결하였습니다. package BOJ.dp; import java.io.BufferedReader; import java.io.InputStreamReader; public..

알고리즘 2023.10.11

백준 14497번 주난의 난 (JAVA)

https://www.acmicpc.net/problem/14497 14497번: 주난의 난(難) 주난이는 크게 화가 났다. 책상 서랍 안에 몰래 먹으려고 숨겨둔 초코바가 사라졌기 때문이다. 주난이는 미쳐 날뛰기 시작했다. 사실, 진짜로 뛰기 시작했다. ‘쿵... 쿵...’ 주난이는 점프의 파 www.acmicpc.net 저는 bfs와 우선순위 큐를 통해 문제를 해결하였습니다. bfs로 모든 경로를 탐색하여 목표까지 최단거리를 찾았습니다. 처음에는 큐를 통해 문제를 해결하여 하였지만, 이럴 경우 메모리 초과가 나오게 되어 우선순위 큐를 통해 현재 가장 가까운 지점부터 진행하도록 하여 해결하였습니다. package BOJ.bfs; import java.io.BufferedReader; import java..

알고리즘 2023.10.10

백준 29703번 펭귄의 하루 (JAVA)

https://www.acmicpc.net/problem/29703 29703번: 펭귄의 하루 $1$ × $1$ 크기의 정사각형 칸으로 각각 나누어져 있는 $N$ × $M$의 행렬로 표현되는 펭귄 마을이 있다. 펭귄 마을의 정보는 문자 'S', 'H', 'E', 'D', 'F'로 나타난다. E는 천적이 없어 펭귄이 이동해도 괜 www.acmicpc.net 저는 bfs를 통해 문제를 해결하였습니다. bfs로 모든 경로를 탐색하고 , 해당 경로에 F가 있는지도 확인하고 최단거리를 찾아 문제를 해결하였습니다. package BOJ.bfs; import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.LinkedList; im..

알고리즘 2023.10.09

백준 1251번 단어 나누기 (JAVA)

https://www.acmicpc.net/problem/1251 1251번: 단어 나누기 알파벳 소문자로 이루어진 단어를 가지고 아래와 같은 과정을 해 보려고 한다. 먼저 단어에서 임의의 두 부분을 골라서 단어를 쪼갠다. 즉, 주어진 단어를 세 개의 더 작은 단어로 나누는 것이다 www.acmicpc.net 저는 구현을 통해 문제를 해결하였습니다. 2중 for문으로 나눌 부분을 선택하였고, 이들을 역순으로 하여 합쳐주고 비교하여 사전순으로 가장 앞에 있을 것으로 초기화 하였습니다. 97%에서 '틀렸습니다'가 나온다면 입력값이 사전순으로 가장 앞에 있어서 그것을 출력하는 것이 아닌지 확인하시기 바랍니다. 입력값은 포함되면 안됩니다. package BOJ.etc; import java.io.Buffered..

알고리즘 2023.10.08

백준 14607번 피자 (JAVA)

https://www.acmicpc.net/problem/14607 14607번: 피자 (Large) 예제1의 입력이 1이므로, 게임 시작부터 갑이 분리할 수 있는 피자탑이 없습니다. 따라서 갑이 얻는 즐거움은 0입니다. 예제2의 정답 3은 다음과 같은 과정을 통해 얻어집니다. 먼저 놀이를 시작 www.acmicpc.net 저는 DP를 이용해 문제를 해결하였습니다. cal(n) = n/2 * n/2 + cal(n/2) + cal(n/2) [짝수] cal(n) = n/2 * (n+1)/2 + cal(n/2) + cal(n+1/2) [홀수] 위의 식을 이용하고 위 식을 dp를 사용하지 않으면 중복된 계산이 나오기 때문에 dp를 이용해 이를 해결하였습니다. package BOJ.dp; import java.i..

알고리즘 2023.10.07

백준 13699번 점화식 (JAVA)

https://www.acmicpc.net/problem/13699 13699번: 점화식 다음의 점화식에 의해 정의된 수열 t(n)을 생각하자: t(0)=1 t(n)=t(0)*t(n-1)+t(1)*t(n-2)+...+t(n-1)*t(0) 이 정의에 따르면, t(1)=t(0)*t(0)=1 t(2)=t(0)*t(1)+t(1)*t(0)=2 t(3)=t(0)*t(2)+t(1)*t(1)+t(2)*t(0)=5 ... 주어진 입력 0 ≤ n www.acmicpc.net 저는 dp를 이용해 문제를 해결하였습니다. 점화식을 코드로 작성하고, 점화식대로 계산을 한다면 중복되는 계산이 있기에 DP를 이용해 2번 계산하지 않도록 하였습니다. package BOJ.dp; import java.io.BufferedReader; ..

알고리즘 2023.10.06

백준 1544번 사이클 단어 (JAVA)

https://www.acmicpc.net/problem/1544 1544번: 사이클 단어 사이클 단어는 어떤 단어를 원형 모양으로 차례대로 쓴 것이다. 따라서, 어떤 단어를 이렇게 쓴 후에 임의의 단어를 고른다. 그 후에 시계방향으로 차례대로 읽으면 그 것이 단어가 된다. 만약에 www.acmicpc.net 저는 구현을 통해 문제를 해결하였습니다. 모든 문자열을 받고, 각각의 비교하여 사이클 단어로 같은 단어인지를 판단하였습니다. 먼저 길이가 다르다면, 바로 다르다고 인식하고, 길이가 같다면 각각의 문자열에서 시작 인덱스로 부터 시작하여 문자열의 개수만큼 같은지를 확인하여 사이클 단어로 같은지 판단하여 문제를 해결하였습니다. package BOJ.etc; import java.io.BufferedRea..

알고리즘 2023.10.05

백준 22251번 빌런 호석 (JAVA)

https://www.acmicpc.net/problem/22251 22251번: 빌런 호석 LED를 2개까지 바꿀 수 있을 때, 5층에서 3층, 6층, 8층, 그리고 9층으로 바꿔버릴 수 있다. www.acmicpc.net 저는 구현과 dfs를 통해 문제를 해결하였습니다. 먼저 각각의 숫자를 7세그먼트로 표현했을 때 어디가 불이 나는지를 boolean배열로 표현하였습니다. 그리고 dfs로 각각의 자리의 숫자를 변경해보면서 boolean[]이 얼마나 차이나는지를 확인하고 이 값을 p와 비교하여 dfs를 진행 여부를 판단하여 문제를 해결하였습니다. package BOJ.etc; import java.io.BufferedReader; import java.io.InputStreamReader; import ..

알고리즘 2023.10.04

프로그래머스 9로 나눈 나머지 (JAVA)

https://school.programmers.co.kr/learn/courses/30/lessons/181914 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 저는 구현을 통해 문제를 해결하였습니다. 문자열의 숫자를 모두 더하고 이를 9로 모듈러 연산하여 문제를 풀었습니다. class Solution { public int solution(String number) { int sum = 0; for(int i = 0 ; i < number.length() ; i++){ sum += number.charAt(i) - '0'; } int answer = ..

알고리즘 2023.10.03