18221번 - 교수님 저는 취업할래요

uchan·2021년 7월 30일
0

문제 : https://www.acmicpc.net/problem/18221

백준알고리즘을 돌아다니다 알 수 없는 아우라를 풍기는 제목을 보고 해당 문제를 풀게되었다. 문제를 보고 단순 구현문제여서 다른 문제를 풀까하였지만, 최근 kaggle competition(brain MRI image classification)을 준비하면서 시간분배를 잘못하여 오늘은 간단한 문제를 풀기로 하였다.

문제

성규가 교수 몰래 땡땡이 치는데 상황조건은 다음과 같다.
1. 교수와 성규가 축과 평행한 일직선상에 있다면 교수와의 거리 상관없이 교수와 성규 사이에 학생 3명 이상
2. 축과 평행한 일직선상에 없다면 직사각형을 그리고 해당 사각형 내에 학생 3명 이상 및 거리는 5 이상

문제풀이

위 조건을 그대로 사용하여 구현만 하면된다. 간단하므로 따로 코드에 대한 해석은 하지 않겠다.

n = int(input())
board = []
gyu = None
professor = None
for i in range(n):
    temp = list(map(int,input().split()))
    for j in range(n):
        if temp[j]==2:
            gyu = (i,j)
        elif temp[j]==5:
            professor = (i,j)
    board.append(temp)
    
def check(x1,y1,x2,y2):
    cnt = 0
    x_min,x_max = min(x1,x2),max(x1,x2)
    y_min,y_max = min(y1,y2),max(y1,y2)
    for y in range(y_min,y_max+1):
        for x in range(x_min,x_max+1):
            if board[y][x]==1:
                cnt+=1
    if cnt>=3 and (x1-x2)**2 + (y1-y2)**2 >=25:
        if x1==x2 or y1==y2:
            return True
        else:
            if (x1-x2)**2 + (y1-y2)**2 >=25:
                return True
    else:
        return False
        
y1,x1 = gyu
y2,x2 = professor
answer = check(x1,y1,x2,y2)
print(int(answer))

result


사실 필자는 엄청 틀렸었다. 왜냐하면 조건을 빼먹어서 70퍼에서 계속 틀렸기 때문이다. 문제가 쉽다고 대충읽지 말고 꼼꼼하게 읽기!!

0개의 댓글