inblog logo
|
LHS's Study Space
    알고리즘문제풀기프로그래머스

    [프로그래머스] 방문 길이(49994)

    lhs's avatar
    lhs
    Nov 16, 2024
    [프로그래머스] 방문 길이(49994)
    Contents
    1. 문제 풀이 아이디어2. 나의 정답 코드3. 정리
    school.programmers.co.kr
    https://school.programmers.co.kr/learn/courses/30/lessons/49994
     

    1. 문제 풀이 아이디어

    • 이동 경로를 String으로 만들어 Set에 저장하고, 이동할 때마다 확인하면 문제를 해결할 수 있다.

    2. 나의 정답 코드

    class Solution { public int solution(String dirs) { int answer = 0; char[] chars = dirs.toCharArray(); int[] prev = {0, 0}; Set<String> set = new HashSet<>(); StringBuilder stringBuilder = new StringBuilder(); StringBuilder stringBuilder2 = new StringBuilder(); for (char c : chars) { int[] cur = prev.clone(); switch (c) { case 'U': cur[1] += 1; break; case 'D': cur[1] -= 1; break; case 'L': cur[0] -= 1; break; case 'R': cur[0] += 1; break; } if (cur[0] < -5 || cur[0] > 5 || cur[1] < -5 || cur[1] > 5) { continue; } stringBuilder.append(prev[0]).append(prev[1]).append(cur[0]).append(cur[1]); stringBuilder2.append(cur[0]).append(cur[1]).append(prev[0]).append(prev[1]); if (!set.contains(stringBuilder.toString())) { set.add(stringBuilder.toString()); set.add(stringBuilder2.toString()); answer++; } stringBuilder.setLength(0); stringBuilder2.setLength(0); prev = cur; } return answer; } }

    3. 정리

    • prev 배열에 {0, 0}을 저장하고, 이동할 때마다 이전 위치를 저장한다.
    • cur 배열에 이전 위치 값을 저장하고, switch문을 사용하여 입력 값에 따라 값을 변경한다.
    • StringBuilder를 2개 사용하여 이동 경로를 문자열로 만든다.
    • set에 중복된 이동 경로가 없다면 answer 값을 증가시키고, set에 이동 경로를 저장한다.
     
    Share article

    LHS's Study Space

    RSS·Powered by Inblog