[백준] 1446 지름길 - Java

2023. 10. 15. 12:31· Algorithm/백준 문제풀이
목차
  1. 문제 출저
  2. 문제 풀이 
  3. 소스 코드 

 

 

 

문제 출저

https://www.acmicpc.net/problem/1446

 

1446번: 지름길

첫째 줄에 지름길의 개수 N과 고속도로의 길이 D가 주어진다. N은 12 이하인 양의 정수이고, D는 10,000보다 작거나 같은 자연수이다. 다음 N개의 줄에 지름길의 시작 위치, 도착 위치, 지름길의 길이

www.acmicpc.net

 

 

 

문제 풀이 

d까지 가려 합니다. 이 때, 지름길이 주어집니다. 지름길은 시작점, 끝점, 걸린 길이가 주어집니다. 지름길을 적절히 활용하여 d까지 도착하는데 최소 거리를 구하려 합니다. 이 때, 도로는 일반 통행으로 역주행 할 수 없습니다. 즉 도착점이 d 보다 큰 지름길은 이용할 수 없습니다.

 

 

dfs를 통해 구했습니다.

지름길을 이용하는 경우와 지름길을 이용할 수 없는 경우를 나누어 문제를 풀었습니다. 

 

 

 

 

소스 코드 

package baekjoon.backjoon10.day1120.day15;

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

/*
지름길
https://www.acmicpc.net/problem/1446

 */
public class B1446 {

    static int n;
    static int d;
    static int[][] board;
    static int answer;


    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());
        d = Integer.parseInt(st.nextToken());
        board = new int[n][3];
        for(int i = 0; i < n; i++) {
            st = new StringTokenizer(br.readLine());
            board[i][0] = Integer.parseInt(st.nextToken());
            board[i][1] = Integer.parseInt(st.nextToken());
            board[i][2] = Integer.parseInt(st.nextToken());
        }

        Arrays.sort(board, (o1, o2) -> o1[0] - o2[0]);

        answer = 10_000;
        dfs(0,0,0);
        System.out.println(answer);

    }

    // 단계, 현재 위치, 거리
    public static void dfs(int stage, int now, int distance) {

        if(stage == n) {
            int newDistance = distance + (d - now);
            answer = Math.min(answer, newDistance);
            return;
        }

        // 지름길을 이용하는 경우
        if(board[stage][0] >= now && board[stage][1] <= d) {
            int newDistance = distance + (board[stage][0] - now) + board[stage][2];
            dfs(stage+1, board[stage][1], newDistance);
        }

        // 지름길을 이용하지 않는 경우
        dfs(stage + 1, now, distance);

    }



}
  1. 문제 출저
  2. 문제 풀이 
  3. 소스 코드 
'Algorithm/백준 문제풀이' 카테고리의 다른 글
  • [백준] 2167 2차원 배열의 합 - Java
  • [백준] 1743 음식물 피하기 - Java
  • [백준] 10431 줄세우기 - Java
  • [백준] 1138 한 줄로 서기 - Java
너지살
너지살
너지살개발자너지살 님의 블로그입니다.
너지살
너지살개발자
너지살
전체
오늘
어제
  • 분류 전체보기 (375)
    • 잡식 (2)
      • 티스토리 (2)
    • 개발 일지 (0)
      • OMS 프로젝트 (4)
      • 우테코 6기 프리코스 (1)
    • Git (2)
    • JAVA (15)
      • Java 공부 (6)
      • 자료구조 (4)
      • 도움되는 메모 (4)
    • DevOps (18)
      • AWS (6)
      • Docker (2)
      • Jenkins (1)
      • Nginx (1)
      • Kafka (6)
      • RabbitMQ (2)
    • Spring, Spring Boot (16)
      • Test Code (1)
      • AOP (2)
      • Batch (3)
      • Cache - Redis (5)
      • Cloud Config - 설정 파일 관리 (3)
      • 성능 측정 (1)
      • 예외 처리 (1)
    • BackEnd (1)
      • Spring 공부 (1)
      • Thymeleaft (0)
    • DB (17)
      • JPA (2)
      • DB 공부 (3)
      • DB 포스팅 (4)
      • DB 답장 (1)
      • MySQL (2)
      • Redis (5)
      • MongoDB (0)
    • CS (8)
      • Spring (4)
      • DataBase (3)
      • Java (1)
    • Algorithm (203)
      • 알고리즘 개념 (5)
      • 정렬 알고리즘 (11)
      • 프로그래머스 문제풀이 (18)
      • 백준 문제풀이 (165)
      • 소프티어 문제풀이 (3)
      • 알고리즘 시험 정리 (1)
    • SQL (0)
      • 문법 (1)
      • 프로그래머스 문제풀이 (52)
      • 리트코드 문제풀이 (19)
    • IT (1)
      • IT 공부 (1)
    • 정리 (10)
      • 질문 정리 (10)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • Spring Boot Redis 연결
  • git
  • 설정
  • redis
  • Spring Boot
  • docker
  • 다이나믹 프로그래밍
  • 최소 신장 트리
  • JPA
  • 경로표현식
  • 투 포인터
  • DP
  • 병렬 처리
  • Spring Batch
  • Sorting algorithm
  • 유니온파인드
  • Union-Find
  • dynamiceprogramming
  • Bitmast
  • 깊이/너비 우선탐색
  • db
  • Java 정리
  • 다이나믹프로그래밍
  • 비트마스킹
  • 그래프 이론
  • 투포인트
  • 알고리즘
  • MST
  • 소프티어
  • 외판원 순회 문제
  • 데이터베이스
  • two pointer
  • Test code
  • 두 포인터
  • 부분탐색
  • 크루스칼 알고리즘
  • Next permutation
  • 다음 순열 찾기
  • DFS
  • cache
  • Java
  • 질문 정리
  • dynamic programing
  • Algorithm
  • 분리 집합
  • 자료구조
  • 그래프 탐색
  • 최소 스패닝 트리
  • 우선수위큐
  • 백준

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.2.2
너지살
[백준] 1446 지름길 - Java
상단으로

티스토리툴바

단축키

내 블로그

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

블로그 게시글

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

모든 영역

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

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