📖 구현(implementation)
📖 완전 탐색
📖 시뮬레이션
📖 구현 시 고려해야 할 메모리 제약 사항
📖 파이썬에서 리스트 크기
데이터의 개수(리스트의 길이) | 메모리 사용량 |
---|---|
1,000 | 약 4KB |
1,000,000 | 약 4MB |
10,000,000 | 약 40MB |
📖 채점 환경
📖 구현 문제에 접근하는 방법
구현 난이도 | 프로그램 실행 시간 | |
---|---|---|
파이썬 | 쉬운 편 | 긴 편 |
PyPy | 쉬운 편 | 다소 짧은 편 |
C/C++ | 어려운 편 | 짧은 편 |
✏️ 예제 4-1. 상하좌우
💻 입력 조건
💻 출력 조건
💻 입력 예시
5 R R R U D D
💻 출력 예시
3 4
📖 문제 해결
# 1. 직접 작성한 풀이
n = int(input())
movement = list(map(str,input().split()))
map_ = [[0]*(n+1) for _ in range(n+1)]
now = [1,1]
for move in movement:
if move == 'U' and now[1] != 1:
now[1] -= 1
elif move == 'D' and now[1] != n:
now[1] += 1
elif move == 'R' and now[0] != n:
now[0] += 1
elif move == 'L' and now[0] != 1:
now[0] -= 1
else:
continue
print(now[1], now[0])
# 2. 책에 제시된 풀이
# N 입력받기
n = int(input())
x, y = 1, 1
plans = input().split()
# L, R, U, D에 따른 이동 방향
dx = [0, 0, -1, 1]
dy = [-1, 1, 0, 0]
move_types = ['L', 'R', 'U', 'D']
# 이동 계획을 하나씩 확인
for plan in plans:
# 이동 후 좌표 구하기
for i in range(len(move_types)):
if plan == move_types[i]:
nx = x + dx[i]
ny = y + dy[i]
# 공간을 벗어나는 경우 무시
if nx < 1 or ny < 1 or nx > n or ny > n:
continue
# 이동 수행
x, y = nx, ny
print(x, y)
✏️ 예제 4-2. 시각
💻 입력 조건
💻 출력 조건
💻 입력 예시
5
💻 출력 예시
11475
📖 문제 해결
# 1. 직접 작성한 풀이
n = int(input())
count = 0
for h in range(n+1):
for m in range(60):
for s in range(60):
time = str(h)+str(m)+str(s)
if time.count('3') >= 1:
count += 1
print(count)
# 2. 책에 제시된 풀이
# H를 입력받기
h = int(input())
count = 0
for i in range(h + 1):
for j in range(60):
for k in range(60):
# 매 시각 안에 '3'이 포함되어 있다면 카운트 증가
if '3' in str(i) + str(j) + str(k):
count += 1
print(count)