[BOJ] 백준 1525 퍼즐 (JAVA)
Algorithm/- Baekjoon2024. 3. 19. 20:58[BOJ] 백준 1525 퍼즐 (JAVA)

📑 문제 🌱 아이디어"고민해도 안 나온다면 답지보고 내 것으로 만들자" 이 문제는 내가 여태까지 풀어왔던 알고리즘 지식 + 기법(?)으로  어떻게는 해결해보려고 했으나 다 실패했다.우울해하면서 결국 검색을 통해 코드를 봤다.HashMap으로 BFS 방문처리를 하는 코드였지만 정말 특이한 부분이 있었다 1차원 배열의 인덱스(문자열)를 2차원 배열로 변경해서 경로 이동후 다시 1차원 배열(문자열)로 변환 후HashMap을 통해 문자열을 저장하는 방법이었다 예를 들어문자열 str = "123456789"3*3 2차원 배열로 나타낼 때 1차원 배열 -> 2차원 배열Y = 3 / 3X = 3 % 3 숫자 4는idx ( 1 , 0 )에 위치하게 된다만약 X 축으로 +1을 해주고 idx ( 1 , 1 )로 이동했..

[BOJ] 백준 10830 행렬 제곱 (JAVA)
Algorithm/- Baekjoon2024. 3. 13. 00:39[BOJ] 백준 10830 행렬 제곱 (JAVA)

📑 문제🌱 아이디어분할정복을 이용한 행렬제곱 문제, 큰 문제를 작은 단위로 나눠서 풀어보자 분할 정복의 가장 기본적인 개념은 큰 문제를 작은 단위로 나눠서 푸는 것이다.. 예를 들면 N^8 은 N*N*N*N*N*N*N*N 이다. 즉 N을 8번 곱해야 한다.  분할 정복을 통해 작은 단위로 나눠서 bottom up 방식으로 푼다면  (((N^2)^2)^2) 3번만 연산하면 된다. 이는 O(logn)의 시간복잡도를 가지며 N^B, B가 클수록 좋은 성능을 보여준다.  그리고 행렬 A와 행렬 B를 곱한다면 A =1234 B =5678  A X B =1*5+2*71*6+2*83*5+4*73*5+4*8 위와 같이 행렬곱셈과 동시에 분할정복으로 작은 단위 ~ 큰 단위로 답을 도출해야 한다.🌱 코드 및 풀이 만..

[BOJ] 백준 11657 타임머신 (JAVA)
Algorithm/- Baekjoon2024. 2. 20. 14:37[BOJ] 백준 11657 타임머신 (JAVA)

📑 문제🌱 아이디어"시간이 되돌아가는 경우" -> 만약 음수 사이클이 존재한다면 무한히 시간을 되돌릴 수 있다즉 그래프 내 음수 사이클을 판별하기 위해 벨만포드 알고리즘을 사용해야 한다! 벨만포드 알고리즘은 최단거리를 구하는 알고리즘입니다. 음수 사이클이 존재한다면 계속 최단거리가 업데이트된다는 특징이 있기 때문에이러한 특징을 바탕으로 밸 만 포드 알고리즘 N번까지 실행했을 때 마지막까지 최단거리가 업데이트된다면 음의 사이클이 존재한다는 것을 증명할 수 있다.   위 그래프는 예제 입력 2번을 토대로 만든 그래프와 가중치이다. 밸만포드 알고리즘을 N번까지 실행해 보자1회 차 : 1(-2) / 2(4) / 3(0)2회 차 : 1(-4) / 2(2) / 3(-2)3회 차 : 1(-6) / 2(0) / 3..

[BOJ] 백준 17836 공주님을 구해라! (JAVA)
Algorithm/- Baekjoon2024. 2. 13. 19:53[BOJ] 백준 17836 공주님을 구해라! (JAVA)

📑 문제🌱 아이디어"검을 먹는 경우"와 "검을 먹지 않는 경우"를 구하고 제한시간에 맞는 경우를 출력하자. 기본적인 BFS 알고리즘을 사용하지만 검을 먹는 경우 or 검을 먹지 않는 경우를 분리해서 풀어야 한다.그러기 위해선 BFS 알고리즘을 실행해서 검을 먹을 수 있는지에 대한 여부를 확인하고 먹었다면먹은 위치에서 목표가 있는 위치까지 벽을 부술 수 있기 때문에(장애물이 없다) 맨해튼 거리 로 최단 거리를 구해 더해주면 된다. Way1, Way2 는 도착할 수 없는 경우도 있기 때문에 Max 값으로 설정 후 진행한다Way1 = 검을 먹지 않는 경우 -> 기본 BFS으로 목적지까지 소요시간Way2 = 검을 먹은 경우 -> 검을 먹기까지  소요시간 + 맨해튼거리(한 칸 당 한 시간) 검을 먹기만 한다면..

[BOJ] 백준  2290 LCD Test (JAVA)
Algorithm/- Baekjoon2024. 2. 5. 12:00[BOJ] 백준 2290 LCD Test (JAVA)

📑 문제🌱 아이디어LCD에 표시된 숫자의 규칙을 찾고 모듈식으로 조립해서 출력하자! 하나하나 N의 크기에 맞춰서 출력하는 것보다 숫자를 구성하는 규칙을 찾고 가로줄을 기준으로 출력을 하는 게 효율적이다. 예제 출력 1을 보면 숫자를 구성하는 모듈 또는 패턴이 보인다 가장 위 부터 오른쪽 바, 왼쪽 바, 양쪽 바, 공백, 하단 바 총 5가지의 모듈이 필요하다.이 경우는 N = 2인 경우다 당연히 N 이 증가되면 그거에 맞게 가로길이는 길어질 것이다. 예를 들어하단 바는 N = 3 일 때 " --- " 이런 형태의 모듈이 요구된다. 위의 예제 출력을 보면 이런 패턴으로 숫자가 출력되는 것을 알 수 있다. 즉 해당 모듈을 이용하여 해당 숫자를 표현하기 위해  행마다 맞는 모듈을 넣고 다음 행으로 넘어가야 ..

반응형
image