Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- typescript
- 리액트
- firebase
- 프론트엔드
- 안드로이드
- react
- 코딩테스트
- 타입스크립트
- 알고리즘
- C++
- CSS
- k for k
- TS
- 스택
- stdin vs input
- kotlin
- 자바스크립트
- 백준 스택 시간초과 python
- Android
- JS
- HTML
- 파이어베이스
- NPM
- 최적화
- javascript
- 파이썬
- Python
- next Link
- nodejs
- 백준 스택
Archives
- Today
- Total
sooleeandtomas
[day11] 코딩테스트 알고리즘 - 완전 탐색 (카펫) python 본문
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제 풀이
문제는 어렵지 않은 것 같다.
(10,2)가 주어졌을 때, 전체의 블록 수를 구한다. => 12 (10 + 2)
for문을 돌면서 12의 약수를 구한다. (12 % i == 0)
for문은 12부터 2까지 돈다.
아래 이미지처럼 2보다 가로나 세로가 작게되면 가운데 블록이 0개가 되기때문에 2까지만 고려해준다.
[12,1],[6,2],[4,3][2,6][1,12] [가로,세로]
이 중에서 (가로-2) x (세로-2) == yellow가 되면 for문 박차고 나온다.
아래 이미지처럼 노란색의 블록 개수는 (가로 - 모서리2개) * (세로 - 모서리2개) 이다.
나의 코드
def solution(brown,yellow):
answer = 0
total = brown + yellow
for col in range(total, 2, -1): #가로가 더 커야되기 때문에 위에서부터 시작함.
# 2보다 가로나 세로가 작게되면 가운데 블록이 0개가 되기때문에 2까지만 고려해준다.
if (total % col ) == 0:
row = total // col #주석이 아니라 나눈 후 소숫점을 빼준 값
if (row - 2) * (col - 2) == yellow: #row - 위아래모서리, col - 오른쪽왼쪽모서리 2씩 빼줘야함.
answer = [col, row]
break
return answer
참고자료
'코딩테스트 알고리즘 > 탐색' 카테고리의 다른 글
[day26] 코딩테스트 알고리즘 - 거리두기 확인하기 (feat.파이썬) (0) | 2022.11.07 |
---|---|
[day25] BFS 기초 (1) (0) | 2022.11.01 |
[day17] 코딩테스트 알고리즘 - 깊이/너비 우선 탐색 (타겟넘버) (feat.파이썬 product) (0) | 2022.10.13 |
[day13] 백준 9095번 완전 탐색 (1,2,3 더하기) python (0) | 2022.10.09 |
[day12] 코딩테스트 알고리즘 - lv.2 완전 탐색 (소수 찾기) python (feat.permutations) (0) | 2022.10.08 |
Comments