문제
내가 작성한 코드
#include <stdio.h>
#include <string.h>
#include <math.h>
#include <stdlib.h>
int main() {
int size;
scanf("%d", &size);
char key[size][10];
char value[size][10];
for(int i = 0; i<size; i++){
char input1[10];
char input2[10];
scanf("%s", input1);
scanf("%s", input2);
strcpy(key[i], input1);
strcpy(value[i], input2);
}
while(1){
char input[10];
scanf("%s", input);
if(strcmp(input, "exit") == 0){
break;
}
int state = 1;
for(int i = 0; i<size; i++){
if(strcmp(input, key[i]) == 0){
printf("%s\n", value[i]);
state = 0;
break;
}
}
if(state != 0){
printf("No match key in dictionary\n");
}
}
return 0;
}
자료구조 시간에 딕셔너리 구조를 java로 짜보았었는데 그걸 c로 작성해볼까 하다가 일단은 직관적으로 풀어보기로 했다
key와 value를 각각 배열로 만들어주고 모두 입력받은 다음
for문을 통해 입력받은 key를 찾아가는 구조다
찾아가다가 일치하는 key가 나오면 그 위치의 value를 출력해주고 출력을 완료하였다는 식으로 state를 0으로 바꾸어주었다.
그 결과 for문이 끝났음에도 불구하고 state가 0이 아니라면 그 안에 key가 없었다는 것이므로
No match key in dictionary를 출력하게 해주었고
입력이 exit일 경우 바로 while문을 종료하도록 해주었다.
굉장히 직관적으로 풀었던 문제 차후에 딕셔너리 구조도 한 번 짜볼까 한다.
'C언어 > 문제은행' 카테고리의 다른 글
[10주차] 예비군 파이팅 (0) | 2023.07.26 |
---|---|
[10주차] 숫자 뒤집기 (0) | 2023.07.26 |
[10주차] 문자열 배열 (0) | 2023.07.19 |
[8주차] 행렬 덧셈, 뺄셈 (0) | 2023.07.17 |
[8주차] 90도 회전 (0) | 2023.07.17 |