4장 구현
이론 예제 4-1 [상하좌우]
난이도 ●○○ ㅣ 풀이 시간 15분ㅣ시간 제한 1초ㅣ메모리 제한 128MB
여행가 A는 N x N 크기의 정사각형 공간 위에 서 있다. 이 공간은 1 x 1크기의 정사각형으로 나누져 있다. 가장 왼쪽 좌표는 (1,1)이며, 가장 오른쪽 아래 좌표는 (N,N)에 해당한다. 여행가 A는 상,하,좌,우 방향으로 이동할 수 있으며, 시작 좌표는 항상 (1,1)이다. 우리 앞에는 여행가 A가 이동할 계획이 적힌 계획서가 놓여 있다.
L:왼쪽으로 한 칸 이동
R:오른쪽으로 한 칸 이동
U:위로 한칸 칸 이동
D:아래로 한 칸 이동
[입력조건]
첫째 줄에 공간의 크기를 나타내는 N이 주어진다(1 ≤ N ≤ 100)
둘째 줄에 여행가 A가 이동할 계획서 내용이 주어진다(1 ≤ 이동 횟수 ≤ 100)
[출력조건]
첫째 줄에 여행가 A가 최종적으로 도착할 지점의 좌표 (X,Y)를 공백으로 구분하여 출력한다.
상하좌우 대표 문제로 쉬운편, 좌표값 기준
dx = [0,0,-1,1]
dy = [-1,1,0,0]
move_type = ['L', 'R', 'U', 'D']
[파이썬 결과]
n = int(input('')) # N X N 행렬 입력
x, y = 1, 1 # 시작점
p = input().split()
# (1,1) 기준 up -1, down 1
# 'L', 'R', 'U', 'D'에 따른 이동 방향
dx = [0,0,-1,1]
dy = [-1,1,0,0]
types = ['L', 'R', 'U', 'D']
for i in p:
for j in range(len(types)):
if i == types[j]:
nx = x + dx[j]
ny = y + dy[j]
if nx < 1 or ny < 1 or nx > n or ny > n:
continue
x, y = nx, ny
print(f'({x},{y})')
[입력]
5
R R R U D D
[결과}
(3,4)
이론 예제 4-2 [시각]
난이도 ●○○ ㅣ 풀이 시간 15분ㅣ시간 제한 2초ㅣ메모리 제한 128MB
정수 N이 입력되면 00시 00분 00초부터 N시 59분 59초까지의 모든 시각 중에서 3이 하나라도 포함되는 모든 경우의 수를 구하는 프로그램을 작성하시오. 예를 들어 1을 입력했을 때 다음은 3이 하나라도 포함되어 있으므로 세어야 하는 시각이다.
- 00시 00분 00초
- 00시 13분 30초
반면에 다음은 3이 하나라도 포함되어 있지 않으므로 세면 안되는 시각이다.
- 00시 02분 55초
- 01시 27분 45초
[입력조건]
첫째 줄에 정수 N이 입력된다.(1 ≤ N ≤ 100)
[출력조건]
00시 00분 00초부터 N시 59분 59초까지의 모든 시각 중에서 3이 하나라도 포함되는 모든 경우의 수를 출력한다.
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)
[입력]
5
[결과]
11475
교재 구매 링크: 한빛미디어
저자: 나동빈
'자료구조 & 알고리즘 > 이론' 카테고리의 다른 글
[자료구조] 큐(queue) 파이썬으로 구현하기 (0) | 2022.04.08 |
---|---|
[자료구조] 스택(stack) 파이썬으로 구현하기 (0) | 2022.04.08 |
[자료구조] 자료구조의 정의 & 분류 (0) | 2022.04.08 |
[자료구조] 빅오(Big-O)표기법 (0) | 2022.04.07 |
[자료구조 & 알고리즘] 시각화 사이트 (0) | 2022.04.07 |
댓글