오늘의 목표
아침 코드카타
언리얼 마스터 과제
언리얼 멀티플레이 강의 듣기, 10번 과제 하기
코드카타
오늘의 문제
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
#include <string.h>
// cards1_len은 배열 cards1의 길이입니다.
// cards2_len은 배열 cards2의 길이입니다.
// goal_len은 배열 goal의 길이입니다.
// 파라미터로 주어지는 문자열은 const로 주어집니다. 변경하려면 문자열을 복사해서 사용하세요.
char* solution(const char* cards1[], size_t cards1_len, const char* cards2[], size_t cards2_len, const char* goal[], size_t goal_len) {
// return 값은 malloc 등 동적 할당을 사용해주세요. 할당 길이는 상황에 맞게 변경해주세요.
char* answer = (char*)malloc(4 * sizeof(char));
answer[0] = '\0';
bool card1_found = false;
bool card2_found = false;
for (size_t i = 0; i < goal_len; ++i)
{
card1_found = false;
card2_found = false;
char* current_goal = goal[i];
printf("current_goal: %s\n", current_goal);
// card 1에 카드 존재하는지 찾기
if (strcmp(cards1[i], current_goal) == 0)
{
card1_found = true;
break;
}
if (strcmp(cards2[i], current_goal) == 0)
{
card2_found = true;
break;
}
// card 2에 카드 존재하는지 찾기
for(size_t k = 0; k < cards2_len; ++k)
{
printf("card2[k]: %s\n",cards2[k]);
printf("card2_found: %d\n", card2_found);
if (strcmp(cards2[k], current_goal) == 0)
{
card2_found = true;
break;
}
}
if (!card1_found && !card2_found)
{
strcat(answer, "No");
return answer;
}
}
strcat(answer, "Yes");
return answer;
}
개선점
맨 앞에 있는 카드를 번갈아가면서 순서 확인 해야한다는 것을 망각하고 있었다. 코딩 문제를 풀 때는 항상 문제 조건을 생각할 것.
+ strcpy를 사용하여 편하게 복사. 굳이 문자열 종료 문자를 넣어주지 않아도 되므로 편리
#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
#include <string.h>
// cards1_len은 배열 cards1의 길이입니다.
// cards2_len은 배열 cards2의 길이입니다.
// goal_len은 배열 goal의 길이입니다.
// 파라미터로 주어지는 문자열은 const로 주어집니다. 변경하려면 문자열을 복사해서 사용하세요.
char* solution(const char* cards1[], size_t cards1_len, const char* cards2[], size_t cards2_len, const char* goal[], size_t goal_len) {
// return 값은 malloc 등 동적 할당을 사용해주세요. 할당 길이는 상황에 맞게 변경해주세요.
char* answer = (char*)malloc(4 * sizeof(char));
// cards1, cards2의 맨 앞 카드를 가리킬 인덱스
size_t cards1_index = 0;
size_t cards2_index = 0;
for (size_t i = 0; i < goal_len; ++i)
{
// 맨 앞자리가 goal과 일치하는지 확인하며 전진
if (cards1_index < cards1_len && strcmp(cards1[cards1_index], goal[i]) == 0)
{
cards1_index++;
}
else if (cards2_index < cards2_len && strcmp(cards2[cards2_index], goal[i]) == 0)
{
cards2_index++;
}
else // 두 카드 뭉치의 맨 앞 카드 모두와 일치하지 않음
{
strcpy(answer, "No");
return answer;
}
}
strcpy(answer, "Yes");
return answer;
}'Unreal5 공부 > TIL' 카테고리의 다른 글
| 2026/06/17 TIL (0) | 2026.06.17 |
|---|---|
| 2026/06/16 TIL (0) | 2026.06.16 |
| 2026/06/11 TIL (0) | 2026.06.11 |
| 2026/06/10 TIL (0) | 2026.06.10 |
| 2026/06/05 TIL (0) | 2026.06.05 |