구현: 머릿속에 있는 알고리즘을 소스코드로 바꾸는 과정
알고리즘 대회에서 구현 문제: 풀이를 떠올리는 것은 쉽지만 소스코드로 옮기기 어려운 문제
일반적으로 알고리즘 문제에서 2차원 공간은 행렬(Matrix)
시뮬레이션 및 완전 탐색 문제에서는 2차원 공간에서의 방향 벡터 활용
파이썬에서 리스트 크기 주의
문제 해결 아이디어
내 풀이
n = int(input())
m = list(input().split())
x, y = 1, 1
dx = [0, 0, -1, 1]
dy = [-1, 1, 0, 0]
directions = ["L", "R", "U", "D"]
for d in m:
for i in range(len(directions)):
if d == directions[i]:
nx = x + dx[i]
ny = y + dy[i]
if nx == 0 or ny == 0 or nx > n or ny > n:
continue
x, y = nx, ny
print(x, y)
정답 예시
n = int(input())
x, y = 1,1
plans = input().split()
# L,R,U,D에 따른 이동 방향
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)
n = int(input())
count = 0
for i in range(n+1):
for j in range(60):
for k in range(60):
if '3' in str(i) or '3' in str(j) or '3' in str(k):
count += 1
print(count)
# H 입력 받기
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)
문제 해결 아이디어
내 코드
n = input()
moves = [(-1, -2),(-2, 1),(-2, 1),(-1, 2),(1, 2),(2, 1),(2, -1),(1, -2)]
row = int(ord(n[0])-96)
column = int(n[1])
position = (row, column)
result = 0
for move in moves:
row = row + move[0]
column = column + move[1]
if row >= 1 and column >= 1 and row <=8 and column <= 8:
result +=1
row = position[0]
column = position[1]
print(result)
# 현재 나이트의 위치 입력받기
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]
next_column = column + step[1]
# 해당 위치로 이동이 가능하다면 카운트 증가
if next_row >=1 and next_row <=8 and next_column >=1 and next_column <= 8:
result += 1
print(result)
문제 해결 아이디어
내 코드
string = input()
l = []
result = 0
for i in string:
if i in 'ABCDEFGHIJKLMNOPQRSTUVWXYZ':
l.append(i)
else:
result += int(i)
l.sort()
for j in l:
print(j,end='')
if result !=0:
print(result,end='')
data = input()
result = []
value = 0
# 문자를 하나씩 확인하며
for x in data:
# 알파벳인 경우 결과 리스트에 삽입
if x.isalpha():
result.append(x)
# 숫자는 따로 더하기
else:
value += int(x)
# 알파벳을 오름차순으로 정렬
result.sort()
# 숫자가 하나라도 존재하는 경우 가장 뒤에 삽입
if value != 0:
result.append(str(value))
# 최종 결과 출력(리스트를 문자열로 변환하여 출력)
print(''.join(result))
참고: 이것이 취업을 위한 코딩 테스트다 with 파이썬 (취업과 이직을 결정하는 알고리즘 인터뷰 완벽 가이드), 유튜브 강의 영상