Search

방문 길이

알고리즘
연습문제
플랫폼
프로그래머스
JCF
HashSet
상태
해결
생성 일시
2024/01/11 08:21
최종 편집 일시
2024/01/11 09:49

문제 설명

해결과정

Solution.java

import java.util.*; class Solution { public int solution(String dirs) { int answer = 0; // 이동한 경로들을 저장할 HashSet HashSet<String> set = new HashSet<>(); // 명령어 변수 char direction = ' '; // 현재 x좌표 int x = 0; // 현재 y좌표 int y = 0; // 이동할 x좌표 int movex = x; // 이동할 y좌표 int movey = y; // Set에 들어갈 좌표 String coordinates1 = ""; String coordinates2 = ""; for(int i = 0; i < dirs.length(); i++) { // 명령 확인 direction = dirs.charAt(i); // 명령어의 적힌 방향대로 이동 switch (direction) { case 'U': movey++; break; case 'D': movey--; break; case 'L': movex--; break; case 'R': movex++; break; } // 이동할 좌표가 좌표평면 내부에 있는지 확인 if(-5 <= movex && movex <= 5 && -5 <= movey && movey <= 5) { // set에 들어갈 경로 입력 coordinates1 = x + "," + y + "=>" + movex + "," + movey; coordinates2 = movex + "," + movey + "=>" + x + "," + y ; // 해당 경로가 이미 지나친 경로가 아니라면 if(!set.contains(coordinates1) && !set.contains(coordinates2)) { // 현재 경로를 Set에 저장 set.add(coordinates1); set.add(coordinates2); // 새로 지나간 경로이므로 answer++; answer++; } // 이동할 좌표를 현재 좌표로 변경 x = movex; y = movey; } // 이동할 좌표가 좌표평면 내부에 없다면 이동하지 않는다. else { movex = x; movey = y; } } return answer; } }
Java
복사