[백준] 3709 - 레이저빔은 어디로

2021. 7. 2. 20:56·알고리즘 (PS)/BOJ
반응형

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

 

3709번: 레이저빔은 어디로

레이저박스라는 게임은 정사각형  모양의 n x n 보드에서 진행한다. (체스판을 상상하면 된다) 레이저박스의 임의의 칸마다 우향우 거울이라는 장치가 설치되어 있고, 마지막으로 레이저 한개가

www.acmicpc.net

그래프 연습문제를 찾다가 오늘은 적당한 난이도로 해보고자 solved.ac 기준 골드 5인 문제를 골랐다.

번역은 오역이 난무해서 문제 이해조차 제대로 안되고, 난이도는 또 너무 쉬워서 좋은 기억은 없었던 문제..

이 정도 난이도면 실버5~4 수준으로 넣어도 아무 상관 없을 것 같다..


번역에서 행과 열을 거꾸로 쓰는 바람에 매우 헷갈렸다.

행인데 어떻게 맨 밑에서 위로 쏘는건지...

이 문제는 원문으로 읽고, 그림을 그려 이해하는 것을 추천한다.

 

사실 매우 간단한 문제이다.

그냥 주어진 보드게임사이즈보다 2 큰 사이즈의 그리드를 그리고,

맨 아랫선을 X축, 맨 왼쪽선을 y축으로 놓은 다음

문제에서 주어진 입력값을 (x, y) 좌표값으로 생각하고,

문제의 출력은 최종 도착하는 좌표를 출력하면 된다.

 

아래에 그린 이미지를 봐주세요

문제의 예제입력1의 테스트 케이스 1을 그림으로 나타낸 것이다.

한국어 번역 기준, 우향우 거울을 만나면 그냥 진행방향의 오른쪽 90도로 꺾으면 된다.

v로 표시한 것이 시작점, 파란색 화살표가 진행경로, 파란 동그라미가 최종 도착지이다.

 

이 그림처럼, 주어진 격자 사이즈보다 2 큰 사이즈의 격자판을 그리고,

현재 진행방향을 체크하는 변수를 두어 그 방향에 맞게 시뮬레이션 하다가

(격자 사이즈가 최대 50*50이라 그냥 한칸식 시뮬레이션 해도 충분하다)

 

좌표가 0 또는 n+1인 곳에 도착하면 그대로 답을 출력하면 된다.

 

import sys
input = sys.stdin.readline
T = int(input())
for _ in range(T):
    n, r = map(int, input().split())
    graph = [[0 for _ in range(n+2)] for __ in range(n+2)]
    for i in range(r):
        x, y = map(int, input().split())
        graph[x][y] = 1
    start_x, start_y = map(int, input().split())

    if start_x == 0:
        direction = 0 # east
    elif start_x == n+1:
        direction = 2 # west
    elif start_y == 0:
        direction = 3 # north
    elif start_y == n+1:
        direction = 1 # south

    now_x = start_x
    now_y = start_y

    while True:
        if direction == 0:
            now_x += 1
        elif direction == 2:
            now_x -= 1
        elif direction == 3:
            now_y += 1
        elif direction == 1:
            now_y -= 1

        if graph[now_x][now_y] == 1:
            direction += 1
            direction %= 4

        if now_x == 0 or now_x == n+1 or now_y == 0 or now_y == n+1:
            print(now_x, now_y)
            break
반응형
저작자표시 비영리 변경금지 (새창열림)

'알고리즘 (PS) > BOJ' 카테고리의 다른 글

[백준] 2342 - Dance Dance Revolution  (0) 2021.07.09
[백준] 1918 - 후위 표기식  (0) 2021.07.04
[백준] 1043 - 거짓말 (분리집합 풀이)  (0) 2021.06.30
[백준] 1005 - ACM Craft  (0) 2021.06.29
[백준] 17298 - 오큰수 (재귀 풀이)  (0) 2021.06.22
'알고리즘 (PS)/BOJ' 카테고리의 다른 글
  • [백준] 2342 - Dance Dance Revolution
  • [백준] 1918 - 후위 표기식
  • [백준] 1043 - 거짓말 (분리집합 풀이)
  • [백준] 1005 - ACM Craft
에버듀
에버듀
개발은 좋은데 뭘로 개발할까
  • 에버듀
    Blog. 에버듀
    에버듀
  • 전체
    오늘
    어제
    • 분류 전체보기 (614) N
      • 개인 프로젝트 (43)
        • 토이 프로젝트 (3)
        • [2020] 카카오톡 봇 (9)
        • [2021] 코드악보 공유APP (22)
        • [2022] 유튜브 뮤직 클론코딩 (9)
        • [2025] 한글 SQL 데이터베이스 (0)
      • 팀 프로젝트 (22)
        • [2020] 인공지능 숫자야구 (4)
        • [2022] OSAM 온라인 해커톤 (10)
        • [2024] GDSC 프로젝트 트랙 (6)
        • [2025] 큰소리 웹 페이지 (2)
      • CS (335)
        • 자료구조 (19)
        • 어셈블리 (41)
        • 멀티미디어응용수학 (7)
        • 컴퓨터 구조 (29)
        • 알고리즘 분석 (4)
        • 컴퓨터 네트워크 (38)
        • 프로그래밍언어론 (15)
        • HCI 윈도우즈프로그래밍 (26)
        • 기초데이터베이스 (29)
        • 운영체제 (23)
        • 오토마타 (24)
        • 문제해결기법 (11)
        • 블록체인 (22)
        • 소프트웨어공학 (21)
        • 기계학습심화 (12)
        • 컴퓨터그래픽스와 메타버스 (8)
        • 분산시스템특론 (6)
      • 자기계발 (44)
        • 생각 정리 (22)
        • 대외활동 (11)
        • 동아리 (7)
        • 자격증 (3)
        • 머니 스터디 (1)
      • 알고리즘 (PS) (107)
        • BOJ (101)
        • Programmers (5)
        • 알고리즘 이모저모 (1)
      • WEB(BE) (8) N
        • express.js (1)
        • Spring & Spring Boot (7) N
      • WEB(FE) (2)
        • html, css, js (1)
        • React.js (1)
      • Tool & Language (6)
        • Edit Plus (1)
        • Git (1)
        • Python3 (2)
        • Java (2)
      • Infra (12)
        • AWS (1)
        • Oracle Cloud (8)
        • Firebase (2)
        • Network (1)
      • Android (18)
        • Java (6)
        • Flutter (12)
      • Window (2)
        • Visual Studio 없이 WPF (1)
        • MFC (1)
      • 독서 (14)
        • Inside Javascript (7)
        • Database Internals (6)
        • 한 글 후기 (1)
  • 링크

    • github
    • website
  • 인기 글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
에버듀
[백준] 3709 - 레이저빔은 어디로
상단으로

티스토리툴바