Notice
Recent Posts
Recent Comments
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- swea
- Sort
- 이런게4문제
- 삼성
- 문자열
- 2018
- 삼성SW역량테스트
- find
- Set
- KAKAO
- 레벨3
- 삼성SW테스트
- 완전탐색
- 백트래킹
- 프로그래머스
- dp
- C++
- 모의SW역량테스트
- STL
- substr
- 브루트포스
- Map
- BFS
- priority_queue
- 레벨2
- 백준
- 코딩스킬
- 코딩테스트
- 시뮬레이션
- dfs
Archives
- Today
- Total
-
[프로그래머스] 레벨 2 - 카펫 본문
https://programmers.co.kr/learn/courses/30/lessons/42842
프로그래머스 완전탐색 문제다.
DFS나 BFS, 비트마스킹, next_permutation 사용한 건 아니고
규칙을 찾는 문제였다.
나같은 경우 가장 바깥 갈색 영역의 가로의 길이를 W, 세로의 길이를 H로 지정하고,
내부에 있는 빨간색 부분의 가로의 길이를 w, 세로의 길이를 h로 지정했다.
그리고 전체 카펫의 넓이의 반부터 W를 내려가면서 H와의 조합을 찾은 뒤,
마찬가지 방법으로 빨간색 넓이의 반 부터 w를 내려가면서 h와 조합을 찾고
W와 w, H와 h크기를 비교한 뒤, 위아래, 양옆의 간격이 짝수인지 확인해서 빨간색 부분이 가운데에 있는 것을 확인했다.
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
|
#include <string>
#include <vector>
using namespace std;
int W, H, w, h;
vector<int> solution(int brown, int red) {
bool out = false;
vector<int> answer;
int total = brown + red;
for(W = total/2; W>=1; W--){
if(total % W == 0){
H = total / W;
for(w = red; w >= 1; w--){
if(red % w == 0){
h = red / w;
if(W > w && H > h){
if(((W-w) % 2) == 0 && ((H-h) % 2) == 0){
answer.push_back(W);
answer.push_back(H);
out = true;
break;
}
}
}
}
if(out) break;
}
}
return answer;
}
http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4ftext-decoration:none">Colored by Color Scripter
|
http://colorscripter.com/info#e" target="_blank" style="text-decoration:none;color:white">cs |
'1-4. 프로그래머스' 카테고리의 다른 글
[프로그래머스] 레벨 3 - 네트워크 (0) | 2020.02.09 |
---|---|
[프로그래머스] 레벨 2 - 타겟 넘버 (0) | 2020.02.07 |
[프로그래머스] 레벨 2 - H-Index (0) | 2020.02.07 |
[프로그래머스] 레벨 2 - 소수 찾기 (0) | 2020.02.07 |
[프로그래머스] 레벨 2 - 전화번호 목록 (0) | 2020.02.07 |
Comments