구현 = 머릿 속 알고리즘을 소스코드로 바꾸는 과정
풀이는 쉬운데 소스코드로 옮기기 어려운 문제
ex)코드가 너무 길어지거나, 실수인데 특정 소수점, 문자열을 특정 기준에 맞춰 끊어야하거나, 적절한 라이브러리 찾아서 사용해야 할 때
행렬
동,북,서,남 or 오,위,왼,아래
dx = [0,-1,0,1]
dy = [1,0,-1,0]
현재 위치
x,y = 2,2
for i in range(4):
nx = x + dx[i]
ny = y + dy[i]
print(nx,ny)
문제 1. 상하좌우
비슷한 유형 : 프로그래머스 lv.0 캐릭터의 좌표
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)
문제 2. 시각 - 완전탐색 괜찮음
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) + str(j) + str(k):
count += 1
print(count)
문제 3. 왕실의 나이트
방법1 - 문제1처럼 dx와 dy를 따로 다루기
data = input()
result = 0
dx = [2,2,-2,-2,1,-1,1,-1]
dy = [1,-1,1,-1,2,2,-2,-2]
for i in range(len(dx)):
nx = int(ord(data[0])) - int(ord('a')) + 1 + dx[i] //아스키코드 ord
ny = int(data[1]) + dy[i]
if nx >= 1 and ny >= 1 and nx <= 8 and ny <= 8:
result += 1
print(result)
방법2 - 리스트로 한번에 처리하기
data = input()
row = int(data[1])
column = int(ord(data[0])) - int(ord('a')) + 1
steps = [(-2,-1),(-1,-2),(1,2),(2,1),(-2,1),(-1,2),(1,-2),(2,-1)]
result = 0
for step in steps:
next_row = row + step[0]
next_column = column + step[1]
if next_row >= 1 and next_column >= 1 and next_row <= 8 and next_column <= 8:
result += 1
print(result)
문제 4. 문자열 재정렬
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))