구현 유형
풀이를 떠올리는 것은 쉽지만 코드로 옮기기 어려운 문제
구현 유형 예시
- 알고리즘은 간단한데 코드가 지나칠만큼 길어지는 문제
- 실수 연산을 다루고 특정 소수점 자리까지 출력해야 하는 문제
- 문자열을 특정한 기준에 따라서 끊어 처리해야 하는 문제
- 적절한 라이브러리를 찾아서 사용해야 하는 문제
2차원 공간은 행렬의 의미로 사용됨.
시뮬레이션 및 완전탐색 문제에서 2차원 공간에서의 방향벡터가 자주 활용됨.
# 문제 1
# 해결
import sys
input =sys.stdin.readline
dx=[0,0,-1,1] #행-세로축
dy=[-1,1,0,0] #열-가로축
move_types=['L','R','U','D']
n=int(input().rstrip())
plans=input().split()
x,y=1,1
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 nx>n or ny<1 or ny>n: #만약 다음좌표가 행렬크기를 벗어나면 업데이트 하지않음
continue
x,y=nx,ny
print(x,y)
#문제 2
# 해결
import sys
input =sys.stdin.readline
n=int(input().rstrip())
cnt=0
for i in range(n+1):
for j in range(60):
for k in range(60):
time=str(i)+str(j)+str(k)
if '3' in time: #매 시간마다 3이 포함되면 카운트 증가
cnt+=1
print(cnt)
# 문제 3
# 해결
import sys
input =sys.stdin.readline
coordi=input().rstrip()
row=int(coordi[1]) #'1'을 숫자 1로 변환
col=int(ord(coordi[0])-ord('a'))+1 #'a'를 숫자 1로 변환
cnt=0
direction=[(2,1),(2,-1),(-2,1),(-2,-1),(1,2),(1,-2),(-1,2),(-1,-2)] #가능한 방향벡터들
for d in direction:
nx=row+d[0]
ny=col+d[1]
if nx>8 or nx<1 or ny>8 or ny<1:
continue
cnt+=1
print(cnt)
'Python' 카테고리의 다른 글
[알고리즘] DFS, BFS 알고리즘 (0) | 2024.07.12 |
---|---|
[알고리즘] 그리디 알고리즘 (0) | 2024.06.29 |
[python] 파이썬 2차원 배열 선언 하기 (0) | 2024.06.19 |
댓글