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
- 백트래킹
- 그래프
- stoi
- DFS
- 분할정복
- 다이나믹프로그래밍
- 정렬
- Sort
- Set
- 최소공배수
- 배열
- 프로그래머스
- 알고리즘
- 오블완
- BFS
- 이분탐색
- 문자열
- priority_queue
- C++
- 유클리드호제법
- 에라토스테네스의 체
- 백준
- vector
- N과M
- DP
- int
- 티스토리챌린지
- 깊이우선탐색
- map
- 우선순위큐
Archives
- Today
- Total
안녕 세상아,
[c++/프로그래머스] LV 2 카펫 본문
https://school.programmers.co.kr/learn/courses/30/lessons/42842
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
오랜만에 프로그래머스 !
우선 brown과 yellow를 더해서 총 몇개의 격자가 있는지 구한다(sum). 그 후 weight와 height의 변수를 선언한 후 sum에 height를 나눠준다. 이때 height의 최소 값은 3이다. yellow가 내부에 최소 한줄이 있고, brown이 yellow를 둘러싸게 되면 최소 두줄이 되기 때문이다(1+2).
sum을 height로 나눈 나머지가 0이라면 새로운 if문으로 들어간다. 내부에 있는 yellow 격자의 총 넓이는 위에서 구한 weight와 height에서 각각 2를 뺀 수를 곱해주면 된다. 만약 이 값이 주어진 yellow값고ㅏ 같으면 break해주고 answer 벡터에 넣어주면 된다.
#include <string>
#include <vector>
using namespace std;
vector<int> solution(int brown, int yellow) {
vector<int> answer;
int sum = brown + yellow;
for (int height = 3;; height++) {
if (sum % height == 0) {
int weight = sum / height;
if ((height - 2) * (weight - 2) == yellow) {
answer.push_back(weight);
answer.push_back(height);
break;
}
}
}
return answer;
}
'프로그래머스' 카테고리의 다른 글
[c++/프로그래머스] N개의 최소공배수 (0) | 2023.08.31 |
---|---|
[c++] 구명보트 (0) | 2023.08.17 |
[c++/프로그래머스] LV2 최솟값 만들기 (0) | 2023.05.08 |
[c++/프로그래머스] LV2 JadenCase 문자열 만들기 (0) | 2023.05.07 |
[c++/프로그래머스] LV2 최댓값과 최솟값 (1) | 2023.05.05 |