프로그래머스

코딩 테스트

(Java) 프로그래머스 - 미로 탈출

오랜만에 푸는 BFS 문제였다. 기본적인 BFS 문제에서 약간 더 생각을 해야했는데, 로직을 생각하는데 그리 오래 걸리지는 않았다. 로직 먼저, 탈출을 하기 위해서는 레버까지 가야한다. 그렇기 때문에 레버까지 BFS를 통해 최단거리 탐색을 진행한다. 레버에 도착하고 다시 한번 탈출지점까지 BFS 탐색을 하는데, 여기서 중요한것은 왔던길을 다시 갈 수도 있다는 것이다. 따라서 방문 배열을 초기화 하고 BFS 탐색을 진행해야 한다. 탈출 조건이 (시작지점에서 레버에 도달 && 레버에서 탈출지점까지 도달) 이므로 둘중 하나라도 만족하지 못하면 -1을 리턴해야 한다. 최종 코드 import java.util.*; class Solution { static int[] dRow = {-1, 1, 0, 0}; sta..

코딩 테스트

(Java) 프로그래머스 - 테이블 해시 함수

문제에 각 단계에 맞게 계산하는 쉬운 문제였다. 오랜만에 Comparator를 사용하는 것과 비트 연산이 나와서 재밌었다. 다만 문제 설명이 친절하지는 않아서 예시를 보며 풀었다. 로직 문제 각 단계에 맞게 로직을 작성하면 된다. 1. Comparator를 사용하여 문제에 제시된 대로 정렬하면 된다. 2. 배열을 순회하며 값을 찾아 list에 넣는다. 주의해야 할 것은 각 컬럼의 값이 0부터가 아니라 1부터이고 주어진 타입은 배열이기 때문에 col, row_begin, row_end 값을 보정해야 한다. 3. list를 순회하며 answer에 XOR 연산을 진행한다. 최종 코드 import java.util.*; class Solution { public int solution(int[][] data, ..

코딩 테스트

(Java) 프로그래머스 - 마법의 엘리베이터

처음에는 DP 문제라고 생각하고 풀었는데, 잘못된 접근이었다. 다음으로 storey를 String 배열로 바꾸어서도 풀어보았는데, 자리수가 늘어나는 예외를 처리하지 못했다. 마지막으로 storey를 나눠가는 방식으로 겨우 풀이에 성공했다. 로직 storey가 0이 될때까지 while을 돌린다. 매 roof 마다 가장 끝자리인 num과 num의 앞자리인 nextNum만 확인하면 된다. 왜냐하면 roof에 끝에서 10씩 나누어 주기 때문이다. num이 5보다 크면 현재 층수에서 올라가는것이 빠르고, num이 5보다 작으면 현재 층수에서 내려가는게 빠르다. num이 5라면 num의 앞자리 숫자를 확인해야 한다. 앞자리 숫자가 4보다 크면 올라가는게 빠르고, 작으면 내려가는게 빠르기 때문이다. 최종 코드 imp..

코딩 테스트

(Java) 프로그래머스 - 호텔 대실

문제를 보자마자 누적합을 이용하면 쉽게 풀수 있을것이라고 생각했다. 다만, 누적합을 어떻게 구현해야 하는지 잘 생각이 나지 않아 LocalTime 클래스를 이용해서 풀어보았으나, 테스트 케이스 통과를 하지 못하였다. 그래서 누적합에 대해 검색했고, 쉽게 풀 수 있었다. 로직 2차원 배열 book_time을 순회하며 방 입실 시간과, 퇴실 시간을 구한다. 퇴실 시간에 청소시간을 고려하여 10분을 더해주면 된다. arr 배열에 모든 입실시간과 퇴실시간을 더해주고, 누적합을 구하며 최댓값을 찾으면 된다. 최종 코드 import java.util.*; class Solution { public int solution(String[][] book_time) { int answer = 0; int[] arr = n..

로승리
'프로그래머스' 태그의 글 목록 (2 Page)