Lv 2. 충돌위험 찾기

2025. 1. 16. 16:55·Algorithm & Data Structures/Programers

 

https://school.programmers.co.kr/learn/courses/30/lessons/340211

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

 

 

로봇들이 2D 평면 위에서 이동하며 특정 경로를 따라가는
시뮬레이션 프로그램을 작성했다.
로봇들이 각기 다른 경로를 이동하며 같은 시간에 같은 위치에 도달할 경우 충돌이 발생한다고 정의하고, 이 충돌의 횟수를 계산하는 것이 문제의 요구사항이다.

로봇들이 이동할 수 있는 좌표는 points로 주어진다.

예를 들어 points = {{0, 0}, {1, 1}, {2, 2}, {3, 3}}와 같이 주어진다면

{0, 0}, {1, 1}, {2, 2}, {3, 3}가 가능한 좌표가 된다.

각 로봇이 따라가는 경로는 routes로 주어지며, 이는 points의 인덱스를 기반으로 한다.

 

예를 들어 routes = {{1, 2, 3}, {1, 3, 4}}는 첫 번째 로봇이 {0, 0}에서 시작해 {1, 1}을 거쳐 {2, 2}로 이동하며, 두 번째 로봇은 {0, 0}에서 {2, 2}를 거쳐 {3, 3}으로 이동한다는 의미다.

 

로봇이 이동하면서 매 초마다 위치를 기록하는 것이 이 프로그램의 첫 번째 작업이다.

이를 위해 getPointPerSec 메서드가 사용된다.

이 메서드는 각 로봇의 경로를 따라가며 초 단위로 이동하는 좌표를 Point[] 배열로 만들어 반환한다. 예를 들어, 로봇이 {0, 0}에서 {2, 2}로 이동한다고 하면,

이동 과정에서 {0, 0}, {1, 1}, {2, 2}를 순서대로 배열에 저장하게 된다.

 

로봇들의 모든 이동 경로를 계산한 후, 충돌 여부를 판단하는 작업이 이어진다.

충돌 횟수를 계산하는 count 메서드는 매 초마다 모든 로봇의 위치를 확인한다.

각 초에 특정 위치에 몇 대의 로봇이 있는지를 기록하기 위해 HashMap을 사용하며, 충돌이 발생하면 카운트를 증가시킨다.

여기서 충돌은 두 대 이상의 로봇이 같은 초에 같은 위치에 도달했을 때 발생한다고 정의된다.

 

프로그램의 핵심은 각 로봇의 이동 경로를 정확히 계산하고,

이를 바탕으로 충돌 횟수를 누적하는 것이다. 최종적으로 충돌 횟수를 반환하며,

필요하면 충돌이 발생한 시간과 위치를 로그로 출력할 수도 있다.

이 프로그램은 로봇들의 이동과 충돌 상황을 시뮬레이션하는 데 적합하며,

좌표 기반 시뮬레이션 문제를 해결하는 좋은 예시가 될 수 있다.

 

'Algorithm & Data Structures > Programers' 카테고리의 다른 글

Lv2. 혼자 놀기의 달인  (0) 2025.01.22
Lv 4. 도둑질  (1) 2025.01.20
Lv 2. 석유 시추  (0) 2025.01.14
Lv 2. 두 원사이의 정수 쌍  (0) 2025.01.11
Lv 2. 혼자서 하는 틱택토  (0) 2025.01.09
'Algorithm & Data Structures/Programers' 카테고리의 다른 글
  • Lv2. 혼자 놀기의 달인
  • Lv 4. 도둑질
  • Lv 2. 석유 시추
  • Lv 2. 두 원사이의 정수 쌍
Geisha
Geisha
개발 일기
  • Geisha
    Geisha
    Geisha
  • 전체
    오늘
    어제
    • 분류 전체보기 (347) N
      • Algorithm & Data Structures (265) N
        • BOJ (123) N
        • SWEA (1)
        • Programers (137)
        • Data Structures (3)
      • DB (29)
        • SQL (23)
        • RDBMS (2)
      • Java (1)
        • Class (1)
      • Spring (5)
        • Spring MVC (1)
        • Annotations (1)
      • CS (36)
        • 운영체제 (13)
        • 네트워크 (5)
      • Tool (6)
        • Git (5)
        • AWS (1)
      • Project (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    algorithm
    BFS
    위상정렬
    Stack
    자바
    백트래킹
    Java
    다익스트라
    동적계획법
    이분탐색
    스택
    Union-Find
    백준
    dfs
    유니온파인드
    SQL
    dp
    baekjoon
    경로압축
    구현
    알고리즘
    프로그래머스
    Dijkstra
    다이나믹 프로그래밍
    투포인터
    PriorityQueue
    골드
    binarySearch
    DynamicProgramming
    programmers
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
Geisha
Lv 2. 충돌위험 찾기
상단으로

티스토리툴바