20230629 [Java] 문제풀이
20230629 [Java] 문제풀이 공원 산책 직사각형 모양의 공원 배열과, 로봇 강아지가 수행해야 하는 명령어가 주어진다 직사각형 모양에는 X (장애물), S (시작점), O (강아지가 갈 수 있는 곳)이 있다 명령어는 "방향, 이동하는칸" 이 주어진다 E 2 : 동쪽으로 2칸 W 1 : 서쪽으로 1칸 N 4 : 북쪽으로 4칸 S 3 : 남쪽으로 3칸 만약 명령어가 주어지는데, 장애물에 부딛히거나, 공원 밖으로 나갈 경우, 명령어를 실행하지 않고, 다음 명령어로 넘어간다 코드는 매우 길지만 간단하다 시작점의 좌표를 찾기 시작점 기준으로 명령어를 하나씩 꺼내보기 만약 현재 좌표에서 명령어를 실행했을 때에 공원 안으로 들어오면, 4번으로 넘어간다 for문을 통해, X, 즉 장애물이 있는지 확인을 해본다 ..
2023. 6. 29.
20230628 [Java] 문제풀이
20230628 [Java] 문제풀이 달리기 경주 players 배열은, 경주가 시작할 때에, 선수들이 배치된 순서다 callings는, 선수 이름이 불릴 때마다, 앞에 선수와 순위가 바뀌는 것이다 즉 선수 이름이 불리면, 앞에 선수를 추월한 것이다 처음에는 너무 배열로 하겠다는 생각만 해서, 시간 초과가 나왔다 추후에 map을 사용해서 앞의 선수의 이름, 그리고 등수를 찾으면서, 배열에서 선수의 자리를 바꿔주었더니, 시간 초과를 해결할 수 있었다 import java.util.*; class Solution { public String[] solution(String[] players, String[] callings) { HashMap map = new HashMap(); for (int i = 0;..
2023. 6. 28.
20230627 [Java] 문제풀이
20230627 [Java] 문제풀이 [프로그래머스] 안전지대 행렬이 주어진다 1은 지뢰가 있는 곳 그리고 0은 지뢰가 없는 곳이다 지뢰 기준으로 8방면 (위, 아래, 좌, 우, 대각선) 모두 위험 지역이다 위험 지역이 아닌 곳의 개수를 찾으면 된다 1) 델타 탐색 (dr, dc) 를 통해 1을 발견하면 8방면을 2로 만들어 준다 2) 그렇게 위험 지역을 1과 2로 표시하고, 다시 2중 for문을 통해 안전 지역인 0을 세준다 class Solution { public int solution(int[][] board) { int answer = 0; int[] dr = {-1, -1, -1, 0, 0, 1, 1, 1}; int[] dc = {-1, 0, 1, -1, 1, -1, 0, 1}; for (in..
2023. 6. 27.