현재 상태에서 보는 선택지 중에서 최선의 선택지가 최선이라 가정하는 알고리즘 이다.
#https://www.youtube.com/watch?v=2zjoKjt97vQ&list=PLRx0vPvlEmdAghTr5mXQxGpHjWqSz0dgC&index=3
# N, K 를 공백을 기준으로 구분하여 입력 받기
n, k = map(int, input().split())
reslut = 0
while True:
# N이 K로 나누어 떨어지는 수가 될 때까지 빼기
target = (n // k) * k
result += (n - target)
n = target
# N이 K보다 작을 때 (더이상 나눌 수 없을 때) 반복문 탈출
if n < k:
break
# K로 나눈기
result +=1
n //= k
# 마지막으로 남은 수에 대하여 1씩 빼기
print(x, y)
풀이를 떠올리는 것은 쉽지만 소스코드로 옮기기 어려운 문제를 지칭한다.
구현 유형의 예시는 다음과 같다.
* 알고리즘은 간단한데 코드가 지나칠 만큼 길어지는 문제
* 실수 연산을 다루고, 특정 소수점 자리까지 출력해야 하는 문제
* 문자열을 특정한 기준에 따라서 끊어 처리해야 하는 문제
* 적절한 라이브러리를 찾아서 사용해야 하는 문제
#https://www.youtube.com/watch?v=2zjoKjt97vQ&list=PLRx0vPvlEmdAghTr5mXQxGpHjWqSz0dgC&index=3
# N 입력
n = int(input())
x, y = 1, 1
palns = input().split()
# L, R, U, D 에 따른 이동 방향
dx = [0, 0, -1, 1]
dy = [-1, 1, 0, 0]
# 이동 계획을 하니씩 확인하기
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 ofr ny < 1 or nx > 1, ny > n:
continue
# 이동 수행
x, y = nx, ny
# 도착위치 출력
print(x, y)
#https://www.youtube.com/watch?v=2zjoKjt97vQ&list=PLRx0vPvlEmdAghTr5mXQxGpHjWqSz0dgC&index=3
# 현재 나이트의 위치 입력 받기
input_data = input()
row = int(input_data[1])
column = int(ord(inpuy_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]
next colum = column + step[1]
# 해당 위치로 이동이 가능하다면 카운트 증가
if next_row >= 1 and next_row <= 8 and next_colum >= 1 and next_colum <= 8:
result += 1
# 경우의 수 출력
print(result)