가장 큰 순서대로
, 가장 작은 순서대로
와 같은 기준이 나오면 대체로 그리디 알고리즘가장 큰 화폐 단위부터
돈을 거슬러 준다.500 | 100 | 50 | 10 |
---|---|---|---|
2 | 2 | 1 | 1 |
n = int(input()) # 거슬러주어야 할 돈
money_list = [500, 100, 50, 10]
result = n # 남은 돈
count = 0 # 개수
for i in money_list:
count += result // i
result -= i * (result // i)
if result == 0:
break
print(count)
2차원 공간
은 행렬
의 의미로 사용시뮬레이션 및 완전 탐색 문제
에서는 2차원 공간에서의 방향 벡터
가 자주 활용# 동, 북, 서, 남
dx = [0, -1, 0, 1] # 행
dy = [1, 0, -1, 0] # 열
n = int(input())
x, y = 1, 1 # 초기값
list = input().split()
# L, R, U, D
dx = [0, 0, -1, 1] # 행
dy = [-1, 1, 0, 0] # 열
move_types = ['L', 'R', 'U', 'D']
for i in list:
for j in range(len(move_types)):
if i == move_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(x, y)