머릿 속에 있는 문제 해결 알고리즘을 소스코드로 바꾸는 과정.
def main():
matrix_size = int(input())
commands = input().split()
# x, y 초기화
x, y = 0, 0
# x, y 좌표 변화 리스트
# 좌 우 상 하
dx = [0, 0, -1, 1]
dy = [-1, 1, 0, 0]
command_types = ['L', 'R', 'U', 'D']
for command in commands:
for i in range(len(command_types)):
if command == command_types[i]:
nx = x + dx[i]
ny = y + dy[i]
if nx < 0 or ny < 0 or nx >= matrix_size or ny >= matrix_size:
# out of range error
continue
# 실제 이동 수행
x, y = nx, ny
print(x,y)
if __name__ == "__main__":
main()
https://github.com/ybkim-dev/algorithms/blob/master/구현/상하좌우%20without%20mem%20cache.py
def main():
# 3이 하나라도 포함되는 경우의 수 구하기
n = int(input())
count = 0
# 0 ~ N 시 59분 59초까지 3이 포함되는 경우.
for i in range(n+1):
# 분
for j in range(60):
for k in range(60):
if '3' in str(i) + str(j) + str(k):
count += 1
print(count)
if __name__ == "__main__":
main()
https://github.com/ybkim-dev/algorithms/blob/master/구현/시각.py
def main():
# 나이트의 이동 가능 경우의 수 구하기
knight_point = input()
row = int(ord(knight_point[0])) - int(ord('a')) + 1
col = int(knight_point[1])
# 나이트의 이동 가능 row, col 좌표
d_row = [2, 1, -1, -2, -2, -1, 1, 2]
d_col = [1, 2, 2, 1, -1, -2, -2, -1]
count = 0
for i in range(len(d_row)):
nx = row + d_row[i]
ny = col + d_col[i]
# out of range error.
if nx <= 0 or nx > 8 or ny <= 0 or ny > 8:
continue
else:
count += 1
print(count)
if __name__ == "__main__":
main()
https://github.com/ybkim-dev/algorithms/blob/master/구현/왕실의%20나이트.py
s = input()
string_list = []
number_list = []
for i in range(len(s)):
# 문자열이면 문자열 리스트에 담기
if s[i].isalpha():
string_list.append(s[i])
# 숫자면 숫자 리스트에 담기
else:
number_list.append(s[i])
# 문자열 정렬
string_list.sort()
# 숫자 합
sum = 0
for number in number_list:
sum += int(number)
for i in range(len(string_list)):
print(string_list[i], end='')
print(sum)
https://github.com/ybkim-dev/algorithms/blob/master/구현/문자열%20재정렬.py