본문 바로가기
  • Thank you for visiting.....
728x90
[JAVA/프로그래머스] 리코쳇 로봇 문제 설명 리코쳇 로봇이라는 보드게임이 있습니다. 시작에서 목표 위치까지 최소 몇 번만에 도달할 수 있는지 말하는 게임입니다. 이 게임에서 말의 움직임은 상, 하 , 좌 , 우 4방향 으로 이동할 수 있으며 미끄러져 이동하는 것을 한번의 이동으로 칩니다. 위 그림 처럼 R에서 시작해 "D" 혹은 벽에 부딪힐 떄 까지 가는겁니다. "." 빈 공간을 의미합니다. 만약 위치에 도달할수 없다면 -1을 return 합니다. import java.util.*; class Solution { static class State{ int x, y, moves; State(int x , int y, int moves){ this.x = x; this.y = y; this.moves = moves; } } public in.. 2024. 3. 6.
[JAVA/프로그래머스] 순위 이 문제는 n명의 권투 선수들이 참여한 권투 대회에서 각 선수의 순위를 매기려고 할떄, 주어진 경기 결과를 바탕으로 정확한 순위를 매길 수 있는 선수의 수를 찾는 것 입니다. 주어진 경기 결과를 2차원 배열 'results'로 표현되며, '[A , B]'는 A선수가 B선수를 이겼다는 의미입니다. 문제의 핵심은 경기 결과 일부가 분실되었음에도 불구하고, 가능한 순위를 정확하게 판단하는 것입니다. 문제 해결 방법 이 문제를 해결하기 위해 플로이드-워셜 알고리즘을 사용 합니다. 플로이드-워셜 알고리즘은 그래프에서 모든 정점 쌍 사이의 최단 경로를 찾는 알고리즘 입니다. 여기서는 최단 경로 대신, 선수 간의 승패 관계를 파악하는 데 이 알고리즘을 응용합니다. [JAVA/알고리즘] 플로이드-워셜 알고리즘 : 모든.. 2024. 2. 27.
[JAVA/프로그래머스]두 정수의 짝꿍 찾기: 알고리즘 문제 해결 방법 이 글에서는 두 정수 X, Y에서 공통된 숫자를 이용해 만들 수 있는 가장 큰 정수, 즉 '짝꿍'을 찾는 알고리즘 문제의 해결 방법을 상세하게 설명합니다. algorithm-problem-solving-find-pair 소개: 두 정수의 공통된 숫자를 이용해 '짝꿍'을 찾는 문제는 언뜻 보기에 단순하지만, 효율적인 해결 방법을 요구합니다. 글에서는 자바를 사용한 알고리즘 문제 해결 과정을 통해, 문자열 처리와 해시맵을 활용하는 방법을 배워봅 두 정수 X와 Y가 주어졌을 떄 , 이 두 수에서 공통으로 나타나는 숫자들만을 이용하여 만들 수 있는 가장 큰 정수를 찾는 것이 목표입니다. 이때, 공통 숫자가 전혀 없다면 '-1'을, 공통 숫자가 있으나 0만으로 구성되어 있다면 '0'을 반환해야 합니다. 이 문제의.. 2024. 2. 22.
[JAVA/프로그래머스] 평행 finding-parallel-lines-algorithm-java-explanation 주어진 문제는 네 개의 점이 이차원 배열로 주어지고, 이 점들을 이용해 두 직선이 평행한지 여부를 판별하는 것 입니다. 문제의 핵심은 주어진 네 점으로 가능한 모든 직선 조합의 기울기를 계산하고, 이 기울기들이 서로 같은지 비교하여 평행한 경우를 찾는 것입니다. 처음에는 기울기를 계산을 이용하여 HashSet 을 이용하여 같은 기울기가 나오면 1을 리턴 하도록 작성하였는데 소수점을 set 에서 저장하거나 차이를 비교할때 소수점 자리수로 인해 실패를 나오는 경우가 있었다... import java.util.HashSet; class Solution { public int solution(int[][] dots) { /.. 2024. 2. 20.
[JAVA/프로그래머스] 대충 만든 자판 안녕하세요 문제 상황 휴대폰의 자판은 각 키에 여러 개의 문자가 할당될 수 있습니다. 동일한 키를 연속해서 빠르게 누르면 할당된 순서대로 문자가 바뀌는 방식입니다. 예를 들어 1번키에 "A","B","C"가 순서대로 할당되어 있다면, 1번 키를 한 번 누르면 "A"가, 두 번 누르면 "B"가 , 세 번 누르면 "C"가 이렵됩니다. 문제 해결 전략 주어진 무자열을 작성하기 위해 각 문자를 입력하는 데 필요한 최소 키 입력 횟수를 계산합니다. 문자열 내의 각 문자에 대해, 해당 문자가 할당된 카를 찾고, 그 키를 몇 번 눌러야 해당 문자가 입력되는지 계산합니다. 모든 문자에 대해 이 과정을 반복하여 전체 키 입력 횟수를 합산합니다. class Solution { public int[] solution(Str.. 2024. 2. 2.
[JAVA/프로그래머스] 덧칠하기 안녕하세요 문제 개요 벽의 길이: n 미터 롤러의 길이: m 미터 도색해야 하는 구역: section 배열 이 문제의 핵심은 롤러를 사용하여 필요한 구역을 최소한의 횟수로 도색하는 것입니다. class Solution { public int solution(int n, int m, int[] section) { if (m == 1) { return section.length; } int answer = 0; int paintEnd = 0; for (int i = 0; i paintEnd) { paintEnd = section[i] + m - 1; answer++; } } return answer; } } 롤러 길이가 1미터인 경우.. 2024. 1. 31.
728x90