https://school.programmers.co.kr/learn/courses/30/lessons/389478
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
생각 흐름
- 2차원 배열을 만들어서 해당 칸에 박스가 있으면 true로 설정.
- 역방향으로 바꿔주고 그러는 게 너무 귀찮아서 폐기.
- num 위에 있는 박스의 숫자를 재귀적으로 구해보자. 즉, 예제 1에서 num 4이면 9를 구해보고, 그 다음에 16, ...
- 한 열에서 이전의 숫자로부터 일정한 패턴의 값이 더해지는 것을 발견.
- 나머지 열에 대해서도 따져보니 1부터 +2씩 w*2-1까지의 숫자들이 각 열마다 더해지는 것을 발견. 즉, 첫 열에서는 11, 두 번째 열에서는 9, ..., 마지막 열은 1
#include <vector>
#include <algorithm>
using namespace std;
vector<int> store;
int solution(int n, int w, int num) {
int answer = 0;
for(int i = 1; i<w*2; i+=2){
store.push_back(i);
}
sort(store.rbegin(), store.rend());
int floor = num/w - (num%w==0?1:0);
int nextNum=num;
while(nextNum<=n){
int addNum;
addNum = nextNum%w==0?w:nextNum%w;
nextNum = nextNum+store[addNum-1];
answer++;
floor++;
}
return answer;
}
'코딩테스트 > C++' 카테고리의 다른 글
[프로그래머스 Level 2] 퍼즐 게임 챌린지 (C++) (0) | 2025.02.19 |
---|---|
[프로그래머스 Level 2] 충돌위험 찾기 (C++) (0) | 2025.02.17 |
[프로그래머스 Level 3] 상담원 인원 (C++) (0) | 2025.02.10 |
[프로그래머스 Level 3] GPS (C++) (0) | 2025.02.08 |
[프로그래머스 Level 3] 캠핑 (C++) (0) | 2025.01.28 |