728x90
▶문제 : 기억력 테스트 9 (codeup.kr)
▶코드 작성
#include <stdio.h>
#include <string.h>
char word[100000][101];
int num[100000];
int printNum[100000];
int main()
{
int n, m, temp, count = 0;
char str[101];
scanf("%d %d", &n, &m);
for (int i = 0; i < n; i++)
{
scanf("%s %d", str, &temp);//str와 temp으로 일단 입력받음
for (int j = 0; j < count; j++)//count는 겹치지 않은 문자들의 수
{
if (strcmp(word[j], str) == 0)//word배열에 str와 같은 문자가 있으면
{
num[j] += temp;//숫자만 더해줌
temp = -1;
break;
}
}
if (temp != -1)//word배열에 str와 같은 문자가 없었을 때
{
strcpy(word[count], str);//word배열에 str문자 추가
num[count++] = temp;//숫자 추가해주고 count++
}
}
for (int i = 0; i < m; i++)
{
scanf("%s", str);
for (int j = 0; j < count; j++)
{
if (strcmp(word[j], str) == 0)//word배열에 str문자가 있으면
{
printNum[i] = num[j];//출력해줄 배열에 숫자 대입
str[0] = '\0';
break;
}
}
if (str[0] != '\0') printNum[i] = 0;//word배열에 str문자가 없으면 0 대입
}
for (int i = 0; i < m; i++)
{
printf("%d\n", printNum[i]);
}
return 0;
}
▶해석
str와 temp으로 먼저 문자와 숫자를 입력받아서 모든 문자를 저장하는 word배열에서 str문자가 있는지 확인한 후 있으면 num배열에 숫자만 더해준다. str문자가 없으면 word배열에 복사하여 추가해준다. 질문하는 문자들 또한 str로 입력받아 word배열에 있으면 num배열에서 알맞은 수를 printNum배열에 저장한다. printNum배열은 질문한 문자들의 순서에 맞게 출력해줄 것이다. str문자가 없으면 printNum배열에 0을 대입해준다.
728x90
'코드업(codeup) > C' 카테고리의 다른 글
코드업(codeup) 2048 : 2048게임 1 C언어 (0) | 2022.01.15 |
---|---|
코드업(codeup) 3109 : 정올 참여 학생 리스트 만들기 2 C언어 (0) | 2022.01.14 |
코드업(codeup) 1430 : 기억력 테스트 2 C언어 (0) | 2022.01.10 |
코드업(codeup) 2748 : 덧셈, 뺄셈으로 n만들기 C언어 (0) | 2022.01.10 |
코드업(codeup) 2640 : n의 k승 구하기 2 C언어 (0) | 2022.01.05 |
댓글