25일차 문제

양진혁·2021년 11월 25일
0

문제풀이

첫번째 문제
행복 왕국 왕실 정원은 체스판과 같은 8x8 좌표 평면이다. 나이트는 말을 타고 있기 때문에 이동을 할 때 1자 형태로 이동 가능하며 정원 밖으로는 나갈 수 없다. 나이트는 특정한 위치에서 다음과 같은 2가지 경우로 이동할 수 있다.

  1. 수평으로 두 칸 이동한 뒤에 수직으로 한 칸 이동하기
  2. 수직으로 두 칸 이동한 뒤에 수평으로 한 칸 이동하기
a = input()
b = int(a[1])
c = int(ord(a[0])) - int(ord('a'))+1
s = [(-2,-1),(-1,-2),(1,-2),(2,-1),(2,1),(1,2),(-1,2),(-2,1)]
r = 0
for i in s:
  nextb= b+i[0]
  nextc=c+i[1]
  if nextb>=1 and nextb <=8 and nextc >=1 and nextc<=8:
    r +=1
print(r)

나이트의 이동 경로를 s 안에 넣어준다. 아래와 오른쪽은 양수값을 왼쪽과 위쪽은 음수값을 대입한다. 그 다음 8가지 방향에 대하여 각 위치로 이동이 가능한지 확인하기 위해서 반복문을 사용한다. 먼저 이동하고자 하는 위치를 확인 후 그 위치가 x,y 좌표 둘 다 1보다 크고 8보다 작을 경우 결과에 1을 추가해 준다

두번째 문제
세준이는 양수와 +, -, 그리고 괄호를 가지고 식을 만들었다. 그리고 나서 세준이는 괄호를 모두 지웠다.

그리고 나서 세준이는 괄호를 적절히 쳐서 이 식의 값을 최소로 만들려고 한다.

괄호를 적절히 쳐서 이 식의 값을 최소로 만드는 프로그램을 작성하시오.

예제 입력 1
55-50+40

예제 출력 1
-35

a = input().split("-")
re = 0
for i in a[0].split("+"):
	    re += int(i)
for i in a[1:]:
    for j in i.split("+"):
        re -= int(j)
print(re)

괄호를 통해서 가장 최소의 값을 만들어 내는 문제이다. 즉 - 기호를 만날 때 가장 큰 수를 빼 주어야 가장 최솟값이 나오는 것이다. 그래서 -를 기준으로 수를 나누어 주었다. 만약 -기호가 없는 경우에는 첫번째 반복문만 실행된 후 결과가 나오게 되고 그게 아닐 경우 두번째 반복문을 통해서 - 이후에 나온 숫자들을 빼줘서 최소값이 나오게 한다.

0개의 댓글