Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |
Tags
- c언어 괄호검사
- 괄호 검사 프로그램
- 네트워크 결합
- 알고리즘 조건
- string유형
- C언어 계산기 프로그램
- 회전 및 자리 이동 연산
- 입출력 관리자
- 백준 파이썬
- 문자형 배열
- C언어 덱
- 논리 연산
- const l-value참조자
- LAN의 분류
- getline()함수
- 유형 변환
- const화
- 문제해결 단계
- C언어 스택 연산
- IPv4 주소체계
- 범위 기반 for문
- l-value참조자
- 주기억장치
- auto 키워드
- 원형 연결 구조 연결된 큐
- 프로그래머스 배열만들기4
- 값/참조/주소에 의한 전달
- 운영체제 기능
- r-value참조자
- 프로그래머스 푸드 파이트 대회
Archives
- Today
- Total
chyam
[백준] 1730번,python - 판화 본문

https://www.acmicpc.net/problem/1730
n = int(input())
m = input()
# 세로, 가로 흔적을 따로 기록
vert = [[False] * n for _ in range(n)]
horiz = [[False] * n for _ in range(n)]
x, y = 0, 0
move = {'U': (-1, 0), 'D': (1, 0), 'L': (0, -1), 'R': (0, 1)}
for d in m:
dx, dy = move[d]
nx, ny = x + dx, y + dy
# 범위를 벗어나면 이동/표시 모두 무시
if not (0 <= nx < n and 0 <= ny < n):
continue
if d in 'UD':
vert[x][y] = True
vert[nx][ny] = True
else:
horiz[x][y] = True
horiz[nx][ny] = True
x, y = nx, ny # 위치 업데이트
# 결과 출력
for i in range(n):
row = []
for j in range(n):
if vert[i][j] and horiz[i][j]: # 세로, 가로 둘다 진행됐을때
row.append('+')
elif vert[i][j]:
row.append('|')
elif horiz[i][j]:
row.append('-')
else:
row.append('.')
print(''.join(row))
처음 틀린 풀이는 아래와같다. 따로 가로 세로 지난걸 저장하지 않고, 바로 이전에 지난것만 생각을 하였다.
n = int(input())
li = [["."]* n for _ in range(n)]
m = input()
move = { "U":[-1,0], "D":[1,0], "L":[0,-1], "R":[0,1] }
# 처음 행동
prev = m[0] li[0][0] = "|" if prev == "U" or prev == "D" else "-"
x, y = move[prev][0],move[prev][1]
for i in range(1,len(m)):
dx, dy = move[m[i]]
tmp_x, tmp_y = dx + x, dy + y
if 0 <= tmp_x < n and 0 <= tmp_y < n: # 범위 내일 때
if prev == "U" or prev == "D":
if m[i] == "R" or m[i] == "L":
li[x][y] = "+"
else:
li[x][y] = "|"
else:
if m[i] == "U" or m[i] == "D":
li[x][y] = "+"
else:
li[x][y] = "-"
x, y = tmp_x,tmp_y
prev = m[i]
if prev == "U" or prev == "D":
li[x][y] = "|"
else:
li[x][y] = "-"
# 출력
for row in li:
print("".join(row))'백준' 카테고리의 다른 글
| [백준] 2223번,python - 금화 (1) | 2025.09.01 |
|---|---|
| [백준] 2072번,python - 오목 (2) | 2025.08.27 |
| [백준] 1680번,python - 쓰레기 수거 (0) | 2025.08.25 |
| [백준] 1713번, python - 후보 추천하기 (0) | 2025.08.22 |
| [백준] 1347번,python - 미로 만들기 (0) | 2025.08.19 |
