구현 : 시뮬레이션과 완전 탐색 - 상하좌우 문제

2022. 10. 20. 15:35·Coding Test/코테 이론
반응형

구현 ( implementation )

: 머릿속에 있는 알고리즘을 소스코드로 바꾸는 과정

 

 

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

 

 

구현 유형의 예시

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

 

 

일반적으로 알고리즘 문제에서의 2차원 공간은 행렬의 의미로 사용된다.

시뮬레이션 및 완전 탐색 문제에서는 2차원 공간에서의 백터가 자주 활용된다.

( 0 , 0 ) ( 0 , 1 ) ( 0 , 2 ) ( 0 , 3 ) ( 0 , 4 )
( 1 , 0 ) ( 1 , 1 ) ( 1 , 2 ) ( 1 , 3 ) ( 1 , 4 )
( 2 , 0 ) ( 2 , 1 ) ( 2 , 2 ) ( 2 , 3 ) ( 2 , 4 )
( 3 , 0 ) ( 3 , 1 ) ( 3 , 2 ) ( 3 , 3 ) ( 3 , 4 )
( 4 , 0 ) ( 4 , 1 ) ( 4 , 2 ) ( 4 , 3 ) ( 4 , 4 )

 

# 동, 북, 서, 남
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)

 

 

 


 

 

문제 설명

여행가 A는 NxN 크기의 정사각형 공간위에 서 있다. 이 공간은 1x1 크기의 정사각형으로 나누어져 있다.
가장 왼쪽 위 좌표는 (1,1) 이며, 가장 오른쪽 아래 좌표는 (N,N)에 해당한다.
여행가 A는 상하좌우 방향으로 이동할 수 있으며, 시작 좌표는 항상 (1,1)이다.
여행가 A의 이동 계획서에는 L, R, U, D가 반복적으로 적혀있다. ( Left, Right, Up, Down )
정사각형을 벗어나는  움직임은 무시된다.

# 입력 조건

  • 첫째 줄에 공간의 크기를 나타내는 N이 주어진다. ( 1<=N<=100 )
  • 둘째 줄에 여행가 A가 이동할 계획서 내용이 주어진다. ( 1<=이동 횟수<=100 )

# 출력 조건

  • 첫째 줄에 여행가 A가 최종적으로 도착할 지점의 좌표 (X,Y)를 공백을 기준으로 구분하여 출력한다.
입력 예시 출력 예시
5
R R R U D D
3 4

 

 

문제 해결 아이디어

  • 요구사항대로 충실히 구현

 

풀이 : O(N)의 시간 복잡도

n = int(input('공간의 크기 입력'))
x,y=1,1
plan = input().split()

dx=[0,0,-1,1]
dy=[-1,1,0,0]
move = ['L','R','U','D']

for i in plan:
    for j in range(len(move)):
        if i==move[j]:
            nx = x+dx[j]
            ny = y+dy[j]
    if nx < 1 or ny <1 or nx>n or ny>n:
        continue
    x,y=nx,ny
    
print(x,y)

 

 

반응형

'Coding Test > 코테 이론' 카테고리의 다른 글

구현 : 시뮬레이션과 완전 탐색 - 왕실의 나이트  (0) 2022.10.21
구현 : 시뮬레이션과 완전 탐색 - 시각 문제  (0) 2022.10.21
그리디(탐욕법) 알고리즘 - 모험가 길드  (0) 2022.10.20
그리디(탐욕법) 알고리즘 - 곱하기 혹은 더하기  (0) 2022.10.19
그리디(탐욕법) 알고리즘 - 1이 될 때 까지  (0) 2022.10.19
'Coding Test/코테 이론' 카테고리의 다른 글
  • 구현 : 시뮬레이션과 완전 탐색 - 왕실의 나이트
  • 구현 : 시뮬레이션과 완전 탐색 - 시각 문제
  • 그리디(탐욕법) 알고리즘 - 모험가 길드
  • 그리디(탐욕법) 알고리즘 - 곱하기 혹은 더하기
jjikky
jjikky
  • jjikky
    jikky.env
    jjikky
  • 전체
    오늘
    어제
    • 분류 전체보기
      • React
      • Node.js
        • TDD
        • Node.js
        • mern
        • OAuth
        • js_facebook login
      • Coding Test
        • 백준 알고리즘
        • CodeUp
        • 코테 이론
      • Js
        • Javascript
      • study
        • python
        • android
        • Big data analysis
        • Logic Circuit
      • git
      • 개발일지
      • 게임기획
      • Docker
      • IPFS
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    ifps 네트워크 지연
    UI
    범주형 자료
    NFT Marketplace
    빅데이터
    Ipfs
    안드로이드
    Python
    파이썬 딕셔너리
    verilog할당문
    verilog
    코딩테스트
    파이썬
    ipfs add
    NFT IPFS
    파이썬 그리디
    nft
    그리디 알고리즘
    파이썬 완전탐색
    git 유용한 명령어
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
jjikky
구현 : 시뮬레이션과 완전 탐색 - 상하좌우 문제
상단으로

티스토리툴바