본문 바로가기
Python

[알고리즘] 구현 - 시뮬레이션, 완전탐색

by ginny. 2024. 7. 2.

구현 유형

풀이를 떠올리는 것은 쉽지만 코드로 옮기기 어려운 문제

 

구현 유형 예시

  • 알고리즘은 간단한데 코드가 지나칠만큼 길어지는 문제
  • 실수 연산을 다루고 특정 소수점 자리까지 출력해야 하는 문제
  • 문자열을 특정한 기준에 따라서 끊어 처리해야 하는 문제
  • 적절한 라이브러리를 찾아서 사용해야 하는 문제

 

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

댓글