파비의 매일매일 공부기록

BOJ 2858 - 기숙사 바닥 본문

Problem Solving/BOJ

BOJ 2858 - 기숙사 바닥

fabichoi 2021. 1. 28. 23:30

요즘에 PS 이론만 공부하고 실제 문제풀이를 안 한 거 같아서

오랜만에 BOJ에 접속해서 예전에 틀렸던 문제 중에 풀어볼 만한걸 선정해봤다.

 

문제 자체가 어려운 편은 아니었다.

빨간 타일의 개수가 갈색 타일의 width * 2 + 갈색 타일의 height * 2 + 4와

동일한 값이 되는 width와 height를 구한 뒤

width + 2, height + 2를 출력해주면 된다.

 

그러나 풀면서 꽤 많이 틀렸는데,

갈색 타일 기준 제곱근(sqrt)의 값만 나누어서 순회를 돌려봤는데

그럴 경우 세로로 전개된 그림의 경우 제대로 계산이 안되면서 WA가 발생한다.

(다른 사람의 풀이를 확인하고 깨달음)

그래서 그냥 1부터 갈색 타일의 개수까지 쭉 순회하면서

moduler 연산 시 0이 되는 경우(나누어 떨어지는 경우)만 계산하도록 로직 수정해서 해결했다.

 

작성한 소스는 다음과 같다.

r, b = map(int, input().split(' '))
w = 0
for l in range(1, b+1):
    if b % l != 0:
        continue    
    w = b // l
    sum = w * 2 + l * 2 + 4
    if sum == r:
        if w > l:
            print(str(w + 2) + " " + str(l + 2))
        else:
            print(str(l + 2) + " " + str(w + 2))
        break

오늘도 결국 다른 사람의 풀이를 참조했다. ㅠㅠ

그래도 피드백해서 어떤 부분을 놓쳤는지 확인했으니, 다음에는 놓치지 말자!

반응형

'Problem Solving > BOJ' 카테고리의 다른 글

BOJ 17626 - Four Squares #2  (0) 2021.02.03
BOJ 17626 - Four Squares #1  (0) 2021.02.02
[Week of Line Sweep] BOJ 2594  (0) 2021.01.23
[Week of Line Sweep] BOJ 14465  (0) 2021.01.20
[Week of Line Sweep] BOJ 1911 #2  (0) 2021.01.19
Comments