백준 1730 번 : 판화
📖 문제 📖
https://www.acmicpc.net/problem/1730

📺 입력&출력 📺

📝 풀이 📝
문제를 간단하게 정리해 보면,
로봇이 간 방향을 배열로 출력하는데 직각으로 꺾이는 부분을 '+'으로 출력하는 문제입니다.
처음엔 해당 배열에 방문할 때 마다 +1씩 해주는 배열을 만들어서 사용할까 생각 했지만,해당 배열에 두번 이상 방문을 하게 되면 +를 출력 해야하는지, |인지 -인지 알 수 없다는 문제가 있었기 때문에
행을 체크 해주는 boolean 배열과 열을 체크 해주는 boolean 배열을 만들어서그 행이나 열을 방문 했을 때 True 로 변경 시켜준 후,
마지막 출력에서 행과 열 배열 모두 True인 경우 +를 출력 시키는 방법으로 구현해 보았습니다.
👨💻 나의 코드 👨💻
n = int(input())
row_map = [[False for col in range(n)] for row in range(n)]
col_map = [[False for col in range(n)] for row in range(n)]
cur_y = 0 # 현재 y좌표
cur_x = 0 # 현재 x좌표
input_str = input()
for i in input_str:
if i == 'D' and cur_y<n-1: # 배열의 크기를 넘어가지 않게 하기 위함
col_map[cur_y][cur_x] = True
col_map[cur_y+1][cur_x] = True
cur_y+=1
elif i == 'R' and cur_x<n-1:
row_map[cur_y][cur_x] = True
row_map[cur_y][cur_x+1] = True
cur_x+=1
elif i == 'U' and cur_y>0:
col_map[cur_y][cur_x] = True
col_map[cur_y-1][cur_x] = True
cur_y-=1
elif i == 'L'and cur_x>0:
row_map[cur_y][cur_x] = True
row_map[cur_y][cur_x-1] = True
cur_x-=1
else:
continue
for i in range(0,n):
for j in range(0,n):
if row_map[i][j] and col_map[i][j]:
print('+',end='')
elif row_map[i][j]:
print('-',end='')
elif col_map[i][j]:
print('|',end='')
else:
print('.',end='')
print()
'🏅Coding Test' 카테고리의 다른 글
| [Java] 백준 12841 정보대 등산 (0) | 2025.04.09 |
|---|---|
| [파이썬, Python] 백준 11659 : 구간 합 구하기4 (1) | 2024.02.24 |
| [파이썬, Python] 백준 14425 : 문자열 (0) | 2024.02.14 |
| [파이썬, Python] 백준 18870 : 좌표 압축 (1) | 2024.02.13 |
| [파이썬, Python] 백준 10814 : 나이순 정렬 (0) | 2024.02.13 |