PYTHON/이것이 취업을 위한 코딩테스트다
[이취코] PROBLEM : 상하좌우 / 시각
하부리
2021. 8. 27. 14:37
PROBLEM 1 : 상하좌우
여행가 A는 N x N 크기의 정사각형 공간 위에 서 있다. 이 공간은 1 x 1 크기의 정사각형으로 나누어져 있다.
가장 왼쪽 위 좌표는 (1,1) 이며, 가장 오른쪽 아래 좌표는 (N,N)에 해당한다.
여행가 A는 상,하,좌,우 방향으로 이동할 수 있으며, 시작 좌표는 항상 (1,1)이다.
우리 앞에는 여행가 A가 이동할 계획이 적힌 계획서가 놓여 있다.
🕴 | ||||
🚩 | ||||
계획서에는 하나의 줄에 띄어쓰기를 기준으로 하여 L, R, U, D 중 하나의 문자가 반복적으로 적혀있다.
각 문자의 의미는 다음과 같다.
- L : 왼쪽으로 한 칸 이동
- R : 오른쪽으로 한 칸 이동
- U : 위로 한 칸 이동
- D : 아래로 한 칸 이동
이때 여행가 A가 N x N 크기의 정사각형 공간을 벗어나는 움직임은 무시된다.
예를 들어 (1,1)의 위치에서 L혹은 U를 만나면 무시된다.
... 중략 ...
계획서가 주어졌을 때 여행가 A가 최종적으로 도착할 지점의 좌표를 출력하는 프로그램을 작성하시오.
입력 조건 : 첫째 줄에 공간의 크리를 나타내는 N이 주어진다 (1<= N <= 100)
둘째 줄에 여행가 A가 이동할 계획서 내용이 주어진다. (1<= 이동횟수 <= 100)
출력 조건 : 첫째 줄에 여행가 A가 최종적으로 도착할 지점의 좌표 (X,Y)를 공백으로 구분하여 출력한다.
작성코드
n = int(input())
moves = input().split()
x,y=1,1
for move in moves: # MOVES 에 입력된 문자를 비교하여 각 값이 정해진 영역에서 벗어나지 않으면 값 조정하였음.
if move == 'L':
if y-1 == 0: continue
y -= 1
if move == 'R':
if y+1 == n: continue
y += 1
if move == 'U':
if x-1 == 0: continue
x -= 1
if move == 'D':
if x+1 == n: continue
x += 1
print(x,y) # 결과 출력
예시코드
더보기
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)
PROBLEM 2 : 시각
정수 N이 입력되면 00시 00분 00초부터 N시 59분 59초까지의 모든 시각 중에서 3이 하나라도 포함되는 모든 경우의 수를 구하는 프로그램을 작성하시오.
예를 들어 1을 입력했을 때 다음은 3이 하나라도 포함되어 있으므로 세어야 하는 시각이다.
- 00시 00분 03초
- 00시 13분 30초
반면에 다음은 3이 하나도 포함되어 있지 않으므로 세면 안 되는 시각이다.
- 00시 02분 55초
- 01시 27분 45초
입력 조건 : 첫째 줄에 정수 N이 입력된다. ( 0<= N <=23)
출력 조건 : 00시 00분 00초 부터 N시 59분 59초 까지의 모든 시각 중에서 3이 하나라도 포함되는 모든 경우의 수를
출력한다.
작성코드
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)