본문 바로가기
개발/코딩테스트

[Python] 이것이 코딩테스트다 with 파이썬 - 구현 - 상하좌우

by seopport 2023. 1. 20.
728x90
반응형

* 해당 문제 및 해설은 "이것이 코딩 테스트 다 with 파이썬" 책을 기준으로 요약 및 정리 하여 작성하였습니다.  

 

http://www.yes24.com/product/goods/91433923

 

이것이 취업을 위한 코딩 테스트다 with 파이썬 - YES24

나동빈 저자의 유튜브 라이브 방송 https://www.youtube.com/c/dongbinnaIT 취준생이라면 누구나 입사하고 싶은 카카오 · 삼성전자 · 네이버 · 라인!취업의 성공 열쇠는 알고리즘 인터뷰에 있다!IT 취준생

www.yes24.com


아이디어를 코드로 바꾸는 구현

구현 이란 '머릿속에 있는 알고리즘을 소스코드로 바꾸는 과정' 이다. 
구현 문제 유형은 모든 범위의 코딩 테스트 문제 유형을 포함하는 개념이다.

 

문제 설명 : 구현 상하좌우

여행가 A 는 N X N 크기의 정사각형 공간 위에 서 있다. 이 공간은 1 X 1 크기의 정사각형으로 나누어져 있다.
가장 왼쪽 위 좌표는 (1 , 1) 이며, 가장 오른쪽 아래 좌표는 (N , N) 에 해당한다.
(생략)
계획서에는 하나의 줄에 띄어쓰기를 기준으로 하여 L, R, U, D 중 하나의 문자가 반복적으로 적혀 있다.
각 문자의 의미는 다음과 같아

L : 왼쪽으로 한 칸 이동
R : 오른쪽으로 한 칸 이동
U : 위로 한 칸 이동
D :아래로 한 칸 이동

아래 이미지와 같이 계획서를 짠다고 가정해보자.
1) ( 1 , 1 ) 에서 R 이동하면 ( 1 , 2 ) 이다.
2) ( 1 , 2 ) 에서 R 이동하면 ( 1 , 3 ) 이다. 
3) ( 1 , 3 ) 에서 R 이동하면 ( 1 , 4 ) 이다. 
4) ( 1 , 4 ) 에서 U 이동하면 ( 0 , 4 ) 이다.  공간 밖은 무시한다 
5) ( 1 , 4 ) 에서 D 이동하면 ( 2 , 4 ) 이다. 
6) ( 2 , 4 ) 에서 D 이동하면 ( 3 , 4 ) 이다. 
 
계획서가 주어졌을 때 여행가 A 가 최종적으로 도착할 지점의 좌표를 출력하는 프로그램을 작성하시오.

 

입력 조건

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

출력 조건

  • 첫째 줄에 여행가 A 가 최종적으로 도착할 지점의 좌표 (X, Y)를 공백으로 구분하여 출력한다.

예시

 

입력 예시  출력 예시
5
R R R U D D
3 4               

 

답변 및 해설

# N 을 입력받기
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 > n or nx < 1 or ny > n or ny < 1 :
     	continue
     
     x, y = nx, ny
     
 print(x, y)

 

개인적인 생각

문제를 봤을 때, 굉장히 간단한데 구현이 살짝 까다롭네? 라고 생각 했던 문제이다.
dx, dy 변수를 잡고 상 하 좌 우 를 X 축 / Y 축 기준으로 생각하니 값들이 조금 달라서 헷갈렸던 문제이다.

현재 구현문제로 나와 간단한 난이도를 보이지만, 조금 더 활용하면 dfs 나 bfs 로 변형되어 나오는 경우를 종종 봤기 때문에
기본기를 조금 더 다듬고 구현을 더 빠르게 코딩할 수 있는 Physical 을 기르고자 한다.

 

오늘의 개발자 명언

‘컴퓨터가 생각할 수 있을까?’이렇게 묻는 것은 ‘잠수함이 물 속을 다닐 수 있을까?’라고 묻는 것과 같다.
(Edsger W. Dijkstra, 구조적 프로그래밍, 세마포어 등으로 유명한 컴퓨터 과학자)

출처 : 프로그래밍에 관한 명언 101가지
728x90
반응형