구현이란 머릿속에 있는 알고리즘을 소스코드로 바꾸는 과정이다.
시뮬레이션 및 완전 탐색 문제에서는 2차원 공간에서의 방향 벡터가 자주 활용된다.
일반적으로 알고리즘 문제에서의 2차원 공간은 행렬의 의미로 사용된다.




n = int(input())
x,y=1,1
plans = input().split()
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)
요구사항대로 충실히 구현하면 되는 문제이다.
일련의 명령에 따라서 개체를 차례대로 이동시킨다는 점에서 시뮬레이션 유형으로도 분류되며 구현이 중요한 대표적인 문제 유형이다.

h = int(input())
count = 0
for i in range(h+1):
for j in range(60):
for k in range(60):
if '3' in str(i)+str(j)+str(k):
count+=1
print(count
가능한 모든 시각의 경우를 하나씩 모두 세서 풀 수 있는 문제이다.
하루는 86,000초이므로, 00시 00분 00초부터 23시 59분 59초까지의 모든 경우는 86,400가지이다.
따라서 단순히 시각을 1씩 증가시키면서 3이 하나라도 포함되어 있는지를 확인하면 된다.
이러한 유형은 가능한 경우의 수를 모두 검사해보는 완전 탐색 문제 유형이라고 불린다.


input_data = input()
row = int(input_data[1])
column = int(ord(input_data[0])) - int(ord('a')) +1
# 나이트가 이동할 수 있는 8가지 방향 정의
steps = [(-2,-1), (-1,-2), (1,-2), (2,-1), (2,1), (1,2), (-1,2), (-2,1)]
# 8가지 방향에 대하여 각 위치로 이동이 가능한지 확인
result = 0
for step in steps:
next_row = row+step[0]
nex_column = column+step[1]
if x+dx[i]<9 and x+dy[i]<9 and x+dx[i]>0 and y+dy[i]>0:
result+=1
print(result)
요구사항대로 충실히 구현하면 되는 문제이다.
나이트의 8가지 경로를 하나씩 확인하며 각 위치로 이동이 가능한지 확인한다.
리스트를 이용하여 8가지 방향에 대한 방향 벡터를 정의한다.

data = input()
result = []
value =0
for x in data:
# 알파벳인 경우 결과 리스트에 삽입
if x.isalpha():
result.append(x)
# 숫자는 따로 더하기
else:
value+=int(i)
result.sort()
# 숫자가 하나라도 존재하는 경우 가장 뒤에 삽입
if value != 0:
result.append((str(value))
# 최종 결과 출력(리스트를 문자열로 변환하여 출력)
print(''.join(result))
요구사항대로 충실히 구현하면 되는 문제이다.
문자열이 입력되었을 때 문자를 하나씩 확인한다. 숫자인 경우 따로 합계를 계산한다. 알파벳인 경우 별도의 리스트에 저장한다.
결과적으로 리스트에 저장된 알파벳을 정렬해 출력하고, 합계를 뒤에 붙여 출력하면 된다.