상세 컨텐츠

본문 제목

방문 길이 (Summer/Winter Coding(~2018))

프로그래머스 코딩테스트 풀이

by 발발개발 2022. 7. 27. 13:38

본문

원본 : https://school.programmers.co.kr/learn/courses/30/lessons/49994

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

풀이

import java.util.*;

class Solution {
    public int solution(String dirs) {
        Set<String> set = new HashSet<>();

        int preX;
        int preY;
        int nowX = 0;
        int nowY = 0;

        for (char dir : dirs.toCharArray()) {
            preX = nowX;
            preY = nowY;

            if (dir == 'U') {
                if (preY + 1 > 5 || preY + 1 < -5) {
                    continue;
                }
                nowY = preY + 1;
            } else if (dir == 'D') {
                if (preY - 1 > 5 || preY - 1 < -5) {
                    continue;
                }
                nowY = preY - 1;
            } else if (dir == 'L') {
                if (preX - 1 > 5 || preX - 1 < -5) {
                    continue;
                }
                nowX = preX - 1;
            } else if (dir == 'R') {
                if (preX + 1 > 5 || preX + 1 < -5) {
                    continue;
                }
                nowX = preX + 1;
            }

            set.addAll(Arrays.asList(getString(preX, preY, nowX, nowY)));
        }

        return set.size() / 2;
    }

    public String[] getString(int preX, int preY, int nowX, int nowY) {
        String[] result = new String[2];
        StringBuilder sb = new StringBuilder();

        sb.append("(").append(preX).append(", ").append(preY).append(")")
                .append(" -> ")
                .append("(").append(nowX).append(", ").append(nowY).append(")");

        result[0] = sb.toString();

        sb = new StringBuilder();

        sb.append("(").append(nowX).append(", ").append(nowY).append(")")
                .append(" -> ")
                .append("(").append(preX).append(", ").append(preY).append(")");

        result[1] = sb.toString();

        return result;
    }
}

관련글 더보기

댓글 영역