여행가 A가 N * N
크기의 정사각형 공간 위에 있고. 공간은 1 * 1
크기의 정사각형으로 나누어져 있다. 가장 왼쪽 상단 좌표가 (1, 1)
이고, 가장 오른쪽 하단 좌표는 (N, N)
에 해당된다.
여행자는 상, 하, 좌, 우 방향으로만 이동할 수 있고, 시작 좌표는 항상 (1, 1)
이다.
그리고 여행자 A가 이동할 계획이 적혀있는 계획서가 주어진다. 계획서는 띄어쓰기를 기준으로 L, R, U, D 중 하나의 문자가 반복적으로 주어진다.
각 문자의 의미는 다음과 같다.
예를 들어 N=2 인 정사각형 공간은 아래와 같다.
입력 조건
출력 조건
입력 예시
5
R R R U D D
출력
3 4
# 상하 좌우
n = int(input()) # N x N 정방 행렬 사이즈의 공간
move = map(str, input().split()) # 어떻게 이동 시킬지 계산
move = list(move)
loc = [1, 1]
for i in range(len(move)):
if (move[i] == 'R') & (loc[1] < n):
loc[1] += 1
elif (move[i] == 'D') & (loc[0] < n):
loc[0] += 1
elif (move[i] == 'L') & (loc[1] > 1):
loc[1] -= 1
elif (move[i] == 'U') & (loc[0] > 1):
loc[0] -= 1
print(loc[0], loc[1])
#TEST CASE
# 6
# R R R U U U D D D D D L L L
# [6, 1]
# 3
# R R R R R R R R R U U U D D D D D L L L L L
# 3 1
정수 N이 입력되면 00시 00분 00초부터 N시 59분 59초까지의 모든 시각 중에서 3이 하나라도 포함되는 모든 경우의 수를 구한는 프로그램을 작성하시오. 예를 들어 1을 입력했을 때 다음은 3이 하나라도 포함되어 있으므로 세어야 하는 시각이다.
반면에 다음은 3이 하나도 포함되어 있지 않으므로 세면 안 되는 시각이다.
입력 조건
출력 조건
초단위에 3이 포함되는 경우, 분단위에 3이 포함되는 경우의 수, 시단위에 3이 포함 되는 경우
이렇게 크게 3가지가 있다.
그래서 시간에 3이 포함 될 때 분, 초에 대한 모든 경우의 수를 더하고
분에는 모든 초에 대한 경우의 수를 더하고 ...
초에 대해서는 1씩 더해주면 된다.
# 시각
N = int(input())
cnt = 0
# N시 59분 59초 까지
for i in range(N+1):
if (i == 3) or (i % 10 == 3):
cnt += 60 * 60
continue
for j in range(60):
if (j == 3) or (j % 10 == 3) or (j // 10 == 3):
cnt += 60
continue
for k in range(60):
if (k == 3) or (k % 10 == 3) or (k //10 == 3):
cnt += 1
continue
print(cnt)
행복 왕국의 왕실 정원은 체스판과 같은 8 × 8 좌표 평면이다. 왕실 정원의 특정한 한 칸에 나이트가 서있다.나이트는 매우 충성스러운 신하로서 매일 무술을 연마한다나이트는 말을 타고 있기 때문에 이동을 할 때는 L자 형태로만 이동할 수 있으며 정원 밖으로는 나갈 수 없다나이트는 특정 위치에서 다음과 같은 2가지 경우로 이동할 수 있다
이처럼 8 × 8 좌표 평면상에서 나이트의 위치가 주어졌을 때 나이트가 이동할 수 있는 경우의 수를 출력하는
프로그램을 작성하라. 왕실의 정원에서 행 위치를 표현할 때는 1부터 8로 표현하며, 열 위치를 표현할 때는
a 부터 h로 표현한다
첫째 줄에 8x8 좌표 평면상에서 현재 나이트가 위치한 곳의 좌표를 나타내는 두 문자로 구성된 문자열이 입력된다. 입력 문자는 a1 처럼 열과 행으로 이뤄진다.
첫째 줄에 나이트가 이동할 수 있는 경우의 수를 출력하시오.
입력 예시
a1
출력 예시
2
기본 형변환 종류
# 왕실의 나이트
where = input()
move =[[-2, -1], [-1, -2], [2, -1], [2, 1], [-2, 1], [1, 2], [-1, 2], [1, -2]]
x, y = ord(where[0])-ord('a')+1, int(where[1])
loc = [x, y]
cnt = 0
for i in range(8):
move[i][0] += loc[0]
move[i][1] += loc[1]
if move[i][0] > 0 and (move[i][0] <= 8) and ((move[i][1] > 0) and (move[i][1] <= 8)):
cnt += 1
print(cnt)
현민이는 게임 캐릭터가 맵 안에서 움직이는 시스템을 개발 중이다. 캐릭터가 있는 장소는 1 X 1 크기의 정사각형으로 이뤄진 N X M 크기의 직사각형으로, 각각의 칸은 육지 또는 바다이다. 캐릭터는 동서남북 중 한 곳을 바라본다.
맵의 각 칸은 (A, B)로 나타낼 수 있고, A는 북쪽으로부터 떨어진 칸의 개수, B는 서쪽으로부터 떨어진 칸의 개수이다. 캐릭터는 상하좌우로 움직일 수 있고, 바다로 되어 있는 공간에는 갈 수 없다. 캐릭터의 움직임을 설정하기 위해 정해 놓은 매뉴얼은 이러하다.
현민이는 위 과정을 반복적으로 수행하면서 캐릭터의 움직임에 이상이 있는지 테스트하려고 한다. 메뉴얼에 따라 캐릭터를 이동시킨 뒤에, 캐릭터가 방문한 칸의 수를 출력하는 프로그램을 만드시오.
<입력 조건>
첫째 줄에 맵의 세로 크기 N과 가로 크기 M을 공백으로 구분하여 입력한다.(3 <= N, M <= 50)
둘째 줄에 게임 캐릭터가 있는 칸의 좌표 (A, B)와 바라보는 방햔 d가 각각 서로 공백으로 구분하여 주어진다. 방향 d의 값으로는 다음과 같이 4가지가 존재한다.
0 : 북쪽1 : 동쪽2 : 남쪽3 : 서쪽
셋째 줄부터 맵이 육지인지 바다인지에 대한 정보가 주어진다. N개의 줄에 맵의 상태가 북쪽부터 남쪽 순서대로, 각 줄의 데이터는 서쪽부터 동쪽 순서대로 주어진다. 맵의 외각은 항상 바다로 되어 있다.
0 : 육지1 : 바다처음에 게임 캐릭터가 위치한 칸의 상태는 항상 육지이다.
출력 조건
첫째 줄에 이동을 마친 후 캐릭터가 방문한 칸의 수를 출력한다.
입력 예시
4 4
1 1 0 // (1, 1)에 북쪽(0)을 바라보고 서 있는 캐릭터
1 1 1 1
1 0 0 1
1 1 0 1
1 1 1 1
출력 예시
3
만약 네 방향 모두 이미 가본 칸이거나 바다로 되어 있는 칸인 경우에는, 바라보는 방향을 유지한 채로 한 칸 뒤로 가고 1단계로 돌아간다. 단, 이때 뒤쪽 방향이 바다인 칸이라 뒤로 갈 수 없는 경우에는 움직임을 멈춘다.
이 조건을 보지 않고 문제를 해결하려 했기 때문에 답이 계속 나오지 않았다. 한 칸 뒤로 이동하는 것은 바라보는 방향에서의 한 칸 뒤로 이동인데 그래서 이동을 시키기 전에 바다인지 육지인지 구분을 해야하고 포인터 캐릭터는 엄연히 말해서 이미 이동을 한 것일 수도 있지만 바다면 다시 원위치로 돌려놓게 된다.
5 5
2 2 3
1 1 1 1 1
1 0 0 0 1
1 0 0 1 1
1 1 1 1 1
1 0 0 0 1
5
#게임 개발
n, m = map(int, input().split())
direction = list(map(int, input().split()))
dx = [0, 1, 0, -1] # 북 동 남 서
dy = [-1, 0, 1, 0]
mp = []
cnt = 1
loc = [direction[0], direction[1]] # 좌표 공간
# map 입력 받기
for i in range(n):
tmp = list(map(int, input().split())) # 임시 저장 공간
mp.append(tmp)
flag = 0
toward = direction[2]
mp[loc[0]][loc[1]] = 1
while 1:
# 방향을 찾는다.
flag += 1
toward -= 1
toward %= 4
loc[0] += dx[toward]
loc[1] += dy[toward]
if mp[loc[0]][loc[1]] == 0:
cnt += 1
flag = 0
mp[loc[0]][loc[1]] = 1
elif mp[loc[0]][loc[1]] == 1:
loc[0] -= dx[toward]
loc[1] -= dy[toward]
if flag == 4:
break
print(cnt)
# test case
# 5 5
# 2 2 3
# 1 1 1 1 1
# 1 0 0 0 1
# 1 0 0 1 1
# 1 1 1 1 1
# 1 0 0 0 1
# 5