2023/09/26 3

[Programmers] 아이템 줍기

난이도 : Level 3 문제링크 캐릭터가 아이템을 줍기 위해 이동함 캐릭터는 지형의 가장 바깥쪽 테두리를 따라 이동함 캐릭터가 아이템을 줍기 위해 이동해야 하는 가장 짧은 거리를 리턴하라 각 지형은 직사각형으로 지형들끼리 서로 겹쳐져있다 서로 다른 두 지형들이 x축 또는 y축 좌표가 같은 경우는 없음 두개 이상 분리된 경우도 없음 한 직사각형이 다른 직사각형 안에 완전히 포함되는 경우도 없음 해설 이동할 수 있는 경계 좌표만 이동할 수 있도록 좌표를 가진 2차원 boolean 배열에 경계좌표를 체크함 이동할 수 없는 사각형 내의 좌표들을 캐릭터가 다음 턴에 내부 좌표에 이동하지 못하도록 방문처리함 import java.util.*; class Solution { int m, n; boolean[][] ..

Algorithm/(Java) PS 2023.09.26

[Leetcode Top Interview 150] 127. Word Ladder

난이도 : hard 문제링크 두개의 문자열이 주어진다 : beginWord, endWord 한개의 문자열 리스트가 주어진다 : wordList 이웃한 한 단어 차이만 나는 단어의 쌍들끼리 변환될 수 있다 beginWord에서 endWord로 변환할 때, 가장 적은 수의 변환의 수를 리턴하라 1. 접근법 최소 변환수를 구해야 하므로 큐를 사용하여 BFS 탐색으로 모든 경우를 탐색한다 큐에서 꺼낸 단어와 한글자 차이나는 단어들을 큐에 넣고, 큐가 빌때까지 반복한다 한번 탐색한 단어는 다시 탐색하지 않도록 방문단어들을 Set에 저장해둔다 3. 구현 코드 class Node { String word; int turn; Node (String word, int turn) { this.word = word; thi..

Algorithm/(Java) PS 2023.09.26

[Leetcode Top Interview 150] 212. Word Search II

난이도 : hard 문제링크 2차원 문자 배열 board와 문자열 배열 words가 주어짐 board에 존재하는 모든 word를 리턴하라 word는 words에 해당하는 문자열을 가리킴 board에 인접한 문자들을 가지고 word를 만들 수 있음 1. 접근법 모든 좌표를 시작점으로 word가 될 수 있는지 확인한다 인접한 문자들로 구성된 문자열이 word라면 결과에 추가한다 3. 구현 코드 int r, c, wordIdx; char ch1; int[] dy, dx; Set answer; public List findWords(char[][] board, String[] words) { r = board.length; c = board[0].length; dy = new int[] {1, 0, -1, 0}..

Algorithm/(Java) PS 2023.09.26