[ baekjoon ] 27951번 - 옷걸이
2023. 5. 13. 11:40ㆍbaekjoon
반응형
https://www.acmicpc.net/problem/27951
27951번: 옷걸이
경기과학고등학교에는 아주 무시무시한 부서 하나가 있다. 그 부서의 이름은 바로 '자치부'이다. '자치부'가 하는 주된 역할 중 하나는 아침에 지정된 기숙사에 들어가서 방의 정리 정돈 상태를
www.acmicpc.net
#include <stdio.h>
#include <stdlib.h>
int main()
{
int num;
scanf("%d", &num);
int* hanger = (int*)malloc(4 * num * 2);
int type_num[3] = { 0, };
for (int i = 0; i < num * 2; i += 2)
{
scanf("%d", &hanger[i]);
type_num[hanger[i] - 1]++;
}
int up, down;
scanf("%d %d", &up, &down);
int one = type_num[0];
int three = type_num[2];
int count = 0;
int index = 0;
int index_flag = 1;
int flag = 1;
if (three == num) // all hanger == 3
{
for (int i = 0; i < up * 2; i += 2)
{
hanger[i + 1] = 85;
}
for (int i = 0; i < down * 2; i += 2)
{
hanger[up * 2 + i + 1] = 68;
}
flag = 1;
}
else
{
//up
while (count != up)
{
if (index_flag == 0 && index == num * 2) // no hanger
{
flag = 0;
break;
}
if (one != 0)
{
if (hanger[index] == 1 && hanger[index + 1] != 85)
{
hanger[index + 1] = 85;
one--;
count++;
}
}
else
{
if (index_flag)
{
index = 0;
index_flag = 0;
}
if(hanger[index] == 3 && hanger[index + 1] != 85)
{
hanger[index + 1] = 85;
count++;
}
}
index += 2;
}
index = 0;
count = 0;
//down
if (flag == 1)
{
while (count != down)
{
if (index == num * 2 && count != down) // no hanger
{
flag = 0;
break;
}
if (hanger[index] == 3 || hanger[index] == 2)
{
if (hanger[index + 1] != 85 && hanger[index + 1] != 68)
{
hanger[index + 1] = 68;
count++;
}
}
index += 2;
}
}
}
if (flag)
{
printf("YES\n");
for (int i = 1; i < num * 2; i += 2)
{
printf("%c", hanger[i]);
}
}
else
{
printf("NO");
}
free(hanger);
return 0;
}
옷걸이가 모두 3이라면 상의와 하의를 순차적으로 걸어준다.
만약 아니라면 일단 1에 상의를 걸고 상의가 남으면 3옷걸이에 건다.
하의도 마찬가지로 2에 먼저 걸고 남으면 3 옷걸이에 건다.
상의와 하의를 걸 때 만약 3 옷걸이도 다 사용했는데 상의 또는 하의가 남으면
flag에 0을 주어 NO를 출력하는 곳으로 이동gksek.
배열에서 0포함 짝수 인덱스에는 옷걸이 종류를(1, 2, 3)
홀수 인덱스에는 바로 앞 인덱스에 해당하는 옷걸이에 U(상의) 또는 D(하의) 중 어떤것이 걸려있는지가 들어있다.
반응형
'baekjoon' 카테고리의 다른 글
[ baekjoon ] 25206번 - 너의 평점은 (2) | 2023.05.23 |
---|---|
[ baekjoon ] 1316번 - 그룹 단어 체커 (8) | 2023.05.15 |
[ baekjoon ] 2941번 - 크로아티아 알파벳 (0) | 2023.05.14 |