일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 월간
- 화상영어
- 매일
- 영어원서읽기
- 링피트
- 10분
- 미드시청
- 운동
- 스탭퍼
- 만화도
- leetcode
- realclass
- 뭐든
- 잡생각
- 30분
- 쓰릴오브파이트
- FIT XR
- 프로젝트
- English
- Daily Challenge
- Writing
- 영어공부
- 개발자
- 괜찮음
- 3줄정리
- 읽기
- Problem Solving
- 리얼 클래스
- 사이드
- 파비최
Archives
- Today
- Total
파비의 매일매일 공부기록
BOJ 2858 - 기숙사 바닥 본문
요즘에 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