peacekim
할 수 있는 것과 할 수 없는 것.
peacekim
전체 방문자
오늘
어제
  • 분류 전체보기 (68)
    • 👨‍🏫ps (44)
      • ❄️프로그래머스 (20)
      • 🔟0️⃣백준 (21)
      • leetcode (3)
    • ✍🏻study (20)
      • 👐java (6)
      • 🍃spring (1)
      • 🥇algorithm (0)
      • 🚘oodp (4)
      • 📒 jpa (3)
      • 👣DB (2)
      • 🌂네트워크 (0)
      • 🎸기타 (3)
      • 👊 kotlin (1)
      • 🫥 jvm (0)
    • 📽project (4)
      • 🎀ReBoN (4)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

인기 글

최근 글

티스토리

hELLO · Designed By 정상우.
peacekim
👨‍🏫ps/🔟0️⃣백준

[백준] 1405번 미친 로봇 풀어보기 [Java]

[백준] 1405번 미친 로봇 풀어보기 [Java]
👨‍🏫ps/🔟0️⃣백준

[백준] 1405번 미친 로봇 풀어보기 [Java]

2022. 3. 19. 01:34
반응형

단순한 DFS문제였다. 퍼센트를 구하는 거여서, 약간 어떻게 구하지라는 조금의 의문은 있었지만 단순했다!!

 

👨‍🏫 풀이

인풋을 100으로 나눠주어, 퍼센트로 나타내준다!!
맵이 아니기 때문에, 나가는 것이 존재하지 않기 때문에 충분히 큰 visited를 체크하는 배열을 만들어준다.(움직일 수 있는 최대 숫자가 14이기 때문에 나는 [30][30] 배열을 만들었다)

dfs를 진행하면 된다. 만약 N만큼 움직였다면, 현재 퍼센트를 ans에 더해준다. 이전에 방문했던 적이 있다면 단순하지 않은 이동경로이기 때문에 가지 않는다!!

 

👨🏻‍💻 코드

package 번1405;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Main {
    static int[] mX = {0,0,1,-1}; // 동서남북
    static int[] mY = {1,-1,0,0};
    static double ans = 0;
    static double[] dP;
    static boolean[][] isVisited;
    static int N;
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(br.readLine());
        N = Integer.parseInt(st.nextToken());
        dP = new double[4];
        for(int i = 0 ; i < 4 ; i++) {
            dP[i] = (double) Integer.parseInt(st.nextToken()) / 100;
        }
        isVisited = new boolean[31][31];
        isVisited[15][15] = true;
        dfs(15, 15, 0, 1);
        System.out.println(ans);
    }

    private static void dfs(int x, int y, int cnt, double percent) {
        if(cnt == N) {
            ans += percent;
        } else {
            for(int i = 0 ; i < 4 ; i++) {
                int nX = x + mX[i] ; int nY = y + mY[i];
                if(isVisited[nX][nY]) continue;
                isVisited[nX][nY] = true;
                dfs(nX , nY , cnt + 1, percent * dP[i]);
                isVisited[nX][nY] = false;
            }
        }
    }
}
반응형

'👨‍🏫ps > 🔟0️⃣백준' 카테고리의 다른 글

[백준] 13460번 구슬 탈출 2 풀어보기 [Java]  (0) 2022.03.23
[백준] 2629번 양팔저울 풀어보기 [Java]  (0) 2022.03.19
[백준] 16234번 인구 이동 풀어보기 [Java]  (0) 2022.03.18
[백준] 16926번 배열 돌리기 1 풀어보기 [Java]  (0) 2022.03.18
[백준] 2174번 로봇 시뮬레이션 풀어보기 [Java]  (0) 2022.03.16
  • 👨‍🏫 풀이
  • 👨🏻‍💻 코드
'👨‍🏫ps/🔟0️⃣백준' 카테고리의 다른 글
  • [백준] 13460번 구슬 탈출 2 풀어보기 [Java]
  • [백준] 2629번 양팔저울 풀어보기 [Java]
  • [백준] 16234번 인구 이동 풀어보기 [Java]
  • [백준] 16926번 배열 돌리기 1 풀어보기 [Java]
peacekim
peacekim
할 수 있는 것과 할 수 없는 것. github: https://github.com/PyeongGangKim

티스토리툴바

단축키

내 블로그

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

블로그 게시글

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

모든 영역

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

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