개발자 톡
연습문제 톡
[HSAT 5회 정기 코딩 인증평가 기출] 업무 처리
[인증평가 5차 기출] 업무처리 c++ 오류 찾아주세요!
- 등록일
- 2023-03-07 03:47:10
- 조회수
- 588
- 작성자
- kalvg7240
#include
#include
#include
using namespace std;
int main()
{
int H, K, R;
cin >> H >> K >> R;
int sum = 0;
for(int i = 0 ; i <= H ; i++)
{
sum += pow(2,i);
}
vector> Hmotors (sum+1,vector());
vector TF(sum,1);
for(int i = 0 ; i < pow(2,H) ; i++)
{
for(int j = 1; j <= K ; j++)
{
int A;
cin >> A;
Hmotors[i].push_back(A);
}
}
for(int i = 0; i < R ; i++)
{
int movepoint = 2;
for(int j = sum-1 ; j >= 0 ; j--)
{
if (Hmotors[j].size()!=0)
{
if (j < pow(2,H))
{
Hmotors[j+(movepoint/2)].push_back(Hmotors[j][0]);
Hmotors[j].erase(Hmotors[j].begin());
}
else if (i%2==0 && TF[j]==1)
{
Hmotors[j+(movepoint/2)].push_back(Hmotors[j][1]);
Hmotors[j].erase(Hmotors[j].begin()+1);
}
else
{
Hmotors[j+(movepoint/2)].push_back(Hmotors[j][0]);
Hmotors[j].erase(Hmotors[j].begin());
}
TF[j] = 0;
}
movepoint++;
}
}
int count = 0;
for (int i : Hmotors[sum])
{
count += i;
}
cout << count ;
return 0;
}
2차원 배열을 생성하여 업무를 저장하여 넘겨주는 방식입니다
예를 들어 3층 구조라고 하면 8+4+2+1+1 개의 행을 만들어 각각에 업무를 넣어준뒤
목표 인덱스에 업무를 넘겨주는 방식으로 구성하였습니다.
이때, 홀수 짝수 날을 구분하기 위해서 한번이라도 넘겨준적이 있는 인덱스는 받은 순서대로 넘겨주고, 한번도 넘겨준적이 없는 인덱스는 홀 짝수 날을 구분해서 넘겨주도록 하였습니다.
Subtask1 에서는 다 맞는데 Subtask2 에서는 몇개씩 틀립니다. 도저히 이유를 못찾겠어서 테스트 케이스라도 주시면 감사하겠습니다.
#[hsat_5회_정기_코딩_인증평가_기출]_업무_처리
#c++