23일차 - 알고리즘 코드카타

2024. 8. 14. 22:00·Java & Spring/코딩테스트
목차
  1. - 회고
  2. - 진행

- 회고

73. 공원산책 : https://school.programmers.co.kr/learn/courses/30/lessons/172928

 

프로그래머스

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

programmers.co.kr

class Solution {
    public int[] solution(String[] park, String[] routes) {
        int[] answer = new int[2];

        // 시작점 찾기
        for (int i = 0; i < park.length; i++) {
            if (park[i].contains("S")) {
                answer[0] = i;
                answer[1] = park[i].indexOf("S");
                break;
            }
        }

        // routes 확인
        for (String r : routes) {
            String[] rArr = r.split(" ");
            String dir = rArr[0];
            int dis = Integer.parseInt(rArr[1]);
            boolean conX = true;

            switch (dir) {
                case "E":
                    if (answer[1] + dis < park[0].length()) {
                        if (!park[answer[0]].substring(answer[1] + 1, answer[1] + dis + 1).contains("X")) {
                            answer[1] += dis;
                        }
                    }
                    break;
                case "W":
                    if (answer[1] - dis >= 0) {
                        if (!park[answer[0]].substring(answer[1] - dis, answer[1]).contains("X")) {
                            answer[1] -= dis;
                        }
                    }
                    break;
                case "S":
                    if (answer[0] + dis < park.length) {
                        for (int i = answer[0] + 1; i <= answer[0] + dis; i++) {
                            if (park[i].charAt(answer[1]) == 'X') {
                                conX = false;
                                break;
                            }
                        }
                        if (conX) {
                            answer[0] += dis;
                        }
                    }
                    break;
                case "N":
                    if (answer[0] - dis >= 0) {
                        for (int i = answer[0] - 1; i >= answer[0] - dis; i--) {
                            if (park[i].charAt(answer[1]) == 'X') {
                                conX = false;
                                break;
                            }
                        }
                        if (conX) {
                            answer[0] -= dis;
                        }
                    }
                    break;
            }
        }
        return answer;
    }
}

 

- 풀이 과정 :

  1. for문을 통해 park의 각 요소를 돌며 S를 포함한 문자열이 있는지 확인
  2. S가 있으면 해당 문자열에서 S의 인덱스를 찾아 시작지점으로 설정
  3. routes를 돌며 split을 통해 방향과 거리를 나누고
  4. 방향에 따른 case문 작성
  5. case문 작성 시 가는 길에 X의 포함 여부와, 공원의 범위를 초과하는 경우를 조건문으로 걸러냄

- 진행

일자 완료 번호
24.07.16 ~ 24.07.31 1~63
24.08.01 64
24.08.02 65
24.08.05 66
24.08.06 67
24.08.07 68
24.08.08 69
24.08.09 70
24.08.12 71
24.08.13 72
24.08.14 73
   
   

'Java & Spring > 코딩테스트' 카테고리의 다른 글

26일차 - 알고리즘 코드카타  (2) 2024.08.20
25일차 - 알고리즘 코드카타  (1) 2024.08.19
22일차 - 알고리즘 코드카타  (0) 2024.08.13
21일차 - 알고리즘 코드카타  (0) 2024.08.12
20일차 - 알고리즘 코드카타  (1) 2024.08.09
  1. - 회고
  2. - 진행
'Java & Spring/코딩테스트' 카테고리의 다른 글
  • 26일차 - 알고리즘 코드카타
  • 25일차 - 알고리즘 코드카타
  • 22일차 - 알고리즘 코드카타
  • 21일차 - 알고리즘 코드카타
DJ.Kang
DJ.Kang
백엔드 개발 기록 블로그
  • DJ.Kang
    DJ Hello World
    DJ.Kang
  • 전체
    오늘
    어제
    • 분류 전체보기 N
      • 이론공부 N
        • 정보처리기사 N
      • 시스템설계
      • Java & Spring
        • TIL
        • 트러블슈팅
        • 고도화
        • 알고리즘
        • 코딩테스트
        • Java
        • Spring
        • Thymeleaf
      • 프로젝트
        • coin-trading
        • 트러블슈팅
      • Docker
      • DB
      • AWS
      • CI-CD
      • 웹
      • git & github
      • 구인공고분석
  • 블로그 메뉴

    • 홈
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    java기초
    java 에라토스테네스의 체
    java 제어자
    java 유클리드 호제법
    데이터 크기
    Java 생성자
    java super
    java
    개발로드맵
    java arrays.copyofrnage()
    java 세수의합
    프로그래머스 java 기초 트레이닝
    java 메서드
    데이터 타입
    java two-pointer
    자료구조
    java 멤버
    프로그래머스 java 기초트레이닝
    Java this
    java enhance switch
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
DJ.Kang
23일차 - 알고리즘 코드카타
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.