From 12453e5aa13e5ccad08c3c329e5d8865730b63f2 Mon Sep 17 00:00:00 2001 From: rl544 <111494264+rl544@users.noreply.github.com> Date: Thu, 5 Jan 2023 03:24:47 +0900 Subject: [PATCH] =?UTF-8?q?uploaded=20at=202023.=201.=205.=20=EC=98=A4?= =?UTF-8?q?=EC=A0=84=203:24:46?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- programmers/방문 길이/solution.java | 41 +++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 programmers/방문 길이/solution.java diff --git a/programmers/방문 길이/solution.java b/programmers/방문 길이/solution.java new file mode 100644 index 0000000..155c7bf --- /dev/null +++ b/programmers/방문 길이/solution.java @@ -0,0 +1,41 @@ +// [문제 링크]: https://school.programmers.co.kr/learn/courses/30/lessons/49994# + +import java.util.*; +import java.lang.StringBuilder; +class Solution { + public int solution(String dirs) { + int answer = 0; + int[] pos = {0,0}; + char[] tt = {'L','R','U','D'}; + int[][] ppos = {{-1,0},{1,0},{0,1},{0,-1}}; + HashSet hs = new HashSet<>(); + for(char a : dirs.toCharArray()){ + for(int x = 0; x < 4; x++){ + if(a == tt[x]) { + if(Math.abs(pos[0]+ppos[x][0])<=5&&Math.abs(pos[1]+ppos[x][1])<=5) { + StringBuilder sb = new StringBuilder(); + int aa = pos[0]; + int b = pos[1]; + pos[0] += ppos[x][0]; + pos[1] += ppos[x][1]; + if(aa > pos[0] || b > pos[1]){ + sb.append(aa); + sb.append(pos[0]); + sb.append(b); + sb.append(pos[1]); + } else{ + sb.append(pos[0]); + sb.append(aa); + sb.append(pos[1]); + sb.append(b); + } + + hs.add(sb.toString()); + //System.out.println(pos[0]+" "+pos[1]); + } + } + } + } + return hs.size(); + } +} \ No newline at end of file