1873. 상호의 배틀필드

2023. 8. 27. 15:25·swea

https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV5LyE7KD2ADFAXc 

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

T = int(input())
for tc in range(1,T+1):
    H,W = map(int,input().split())
    m = [list(input()) for _ in range(H)]
    N = int(input())
    command = input()
    where_i, where_j = 0,0
    dir = ''

    # 현재 전차가 있는 위치 찾기
    for i in range(H):
        for j in range(W):
            if m[i][j] in ['<','>','^','v']:
                where_i,where_j = i,j
                dir = m[i][j]

    for c in command:

        # 포탄발사
        if c == 'S':
            if dir == '<': 
                for i in range(1,W):
                    if 0<= where_j-i < W:
                        if m[where_i][where_j-i] == '#':  # 강철벽에 포탄 맞으면
                            break  # 멈춤(아무일도 일어나지 않음)
                        elif m[where_i][where_j-i] == '*':  # 벽돌벽에 포탄 맞으면
                            m[where_i][where_j-i] = '.' # 해당 벽 평지로 바꾸기
                            break

            elif dir == '>':
                for i in range(1,W):
                    if 0<= where_j+i < W:
                        if m[where_i][where_j+i] == '#': 
                            break  # 멈춤
                        elif m[where_i][where_j+i] == '*': 
                            m[where_i][where_j+i] = '.'
                            break         
            elif dir == '^':
                for i in range(1,H):
                    if 0<= where_i-i < H:
                        if m[where_i-i][where_j] == '#': 
                            break  # 멈춤
                        elif m[where_i-i][where_j] == '*': 
                            m[where_i-i][where_j] = '.'
                            break  
            else:
                for i in range(1,H):
                    if 0<= where_i+i < H:
                        if m[where_i+i][where_j] == '#': 
                            break  # 멈춤
                        elif m[where_i+i][where_j] == '*': 
                            m[where_i+i][where_j] = '.'
                            break  

        # 상하좌우 고개돌리기(+이동)
        elif c == 'U':  # 위
            dir = '^'  # 방향 위로 바꾸고
            if 0<=where_i-1 < H and m[where_i-1][where_j] == '.':  # 한칸위가 평지면
                m[where_i][where_j] = '.' # 지나온 길 평지로 채워놓기
                where_i -= 1  # 한칸위로 이동
        elif c == 'D':  
            dir = 'v'  
            if 0<=where_i+1 < H and m[where_i+1][where_j] == '.':  
                m[where_i][where_j] = '.'
                where_i += 1
        elif c == 'L':  
            dir = '<' 
            if 0<=where_j-1 < W and m[where_i][where_j-1] == '.':  
                m[where_i][where_j] = '.'
                where_j -= 1 
        else:
            dir = '>'
            if 0<=where_j+1 < W and m[where_i][where_j+1] == '.':  
                m[where_i][where_j] = '.'  
                where_j += 1

    m[where_i][where_j] = dir  # 현재 위치 방향으로 바꾸기
    print(f'#{tc}', end=" ")
    for i in range(H):
        for j in range(W):
            print(m[i][j], end="")
        print()

조건이 많아서 복붙하면서 실수가 꽤 많았지만 재밌었던 문제!

저작자표시 (새창열림)

'swea' 카테고리의 다른 글

13732. 정사각형 판정  (0) 2023.08.28
18575. 풍선팡 보너스 게임  (0) 2023.08.28
2805. 농작물 수확하기  (0) 2023.08.27
1926. 간단한 369게임  (0) 2023.08.27
7087. 문제 제목 붙이기  (0) 2023.08.25
'swea' 카테고리의 다른 글
  • 13732. 정사각형 판정
  • 18575. 풍선팡 보너스 게임
  • 2805. 농작물 수확하기
  • 1926. 간단한 369게임
버그잡는고양이발
버그잡는고양이발
주니어 개발자입니다!
  • 버그잡는고양이발
    지극히평범한개발블로그
    버그잡는고양이발
  • 전체
    오늘
    어제
    • 분류 전체보기 (381)
      • React (16)
      • Next.js (5)
      • Javascript (5)
      • Typescript (4)
      • Node.js (2)
      • Cs (16)
      • 트러블 슈팅 (5)
      • Html (1)
      • Css (3)
      • Django (0)
      • vue (0)
      • Java (1)
      • Python (0)
      • 독서 (1)
      • 기타 (3)
      • 백준 (192)
      • swea (31)
      • 프로그래머스 (30)
      • 이코테 (4)
      • 99클럽 코테 스터디 (30)
      • ssafy (31)
      • IT기사 (1)
  • 블로그 메뉴

    • 홈
    • 태그
  • 인기 글

  • 태그

    코딩테스트준비
    항해99
    개발자취업
    99클럽
    Til
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
버그잡는고양이발
1873. 상호의 배틀필드
상단으로

티스토리툴바