코딩 테스트/[c언어] cos pro 2급 기출문제

[No.24] 단어의 오타 수정하기 / cos pro 2급 c언어 기출 문제

M개발자 2021. 5. 14. 20:46
반응형

단어의 오타 수정하기


문제 설명

 

영어 단어를 외위기 위해 단어를 반복하여 타이핑합니다. 그런데, 타이핑하고 보니 오타가 많습니다. 오타를 수정하려면 문제를 몇 개 바꿔야 하는지 구하려 합니다. 예를 들어, "CODE"라는 단어를 3번 타이핑했더니 ["CODE", "COED", "CDEO"]가 적혀있었습니다.

 

1. "CODE"는 바르게 적혔습니다.

2. "COED"는 E와 D를 각각 D를 E로 바꾸면 됩니다.

3. "CDEO"는 D, E, O를 각각 O, D, E로 바꾸면 됩니다.

따라서 바꿔야 하는 문자는 총 5개입니다.

 

타이핑한 단어를 담은 배열 words와 words의 길이 words_len, 원래 치려 한 단어인 word가 주어질 때 바꿔야 하는 문자 개수를 return 하도록 solution 함수를 완성해주세요. 

 


예시

 

words words_len word return
["CODE", "COED", "CDEO"] 3 "CODE" 5

 


코드 해석 및 전체 코드

 

count ) 바꾸어야 하는 문자 수를 return 할 변수

 

중첩 for문1 ) 0 ~ words_len(= 3) - 1 반복한다.

 

char* w = words[i] ) words[i]를 문자열 포인터 w에 넣는다.

 

for in for문 ) 0 ~ word의 길이(= 4) - 1 만큼 반복한다.

 

if문 ) 문자열 포인터 w[j]가 word[j]와 같지 않으면(!=) count를 1 증가한다.

i가 0일 때 w에는 "CODE"가 들어있다. w[0]은 "C"가 들어있고, word[0]에는 "C"가 들어있다. 

 

w = "CODE"

j w[j] word[j] count
0 "C" "C"  
1 "O" "O"  
2 "D" "D"  
3 "E" "E"  

i가 0일 때 w는 word(= "CODE")와 같으므로 count는 증가되지 않는다. 

 

w = "COED"

j w[j] word[j] count
0 "C" "C"  
1 "O" "O"  
2 "E" "D" count++
3 "D" "E" count++

i가 1일 때 w는 "COED"로, w[2]와 w[3]이 word와 달라 count가 2 증가된다. 

 

w[2] = "CDEO"

j w[j] word[j] count
0 "C" "C"  
1 "D" "O" count++
2 "E" "D" count++
3 "O" "E" count++

i가 2일 때 w는 "CDEO"로, w[1], w[2], w[3]이 word와 달라 count가 3 증가된다. 

 

총 반환 값 count는 5이다.

 

#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
#include <string.h>
int solution(char* words[], int words_len, char* word) {
	int count = 0;
	for (int i = 0; i < words_len; i++) {
		char* w = words[i];
		for (int j = 0; j < strlen(word); j++) {
			if (w[j] != word[j]) {
				count++;
			}
		}
	}
	return count;
}

int main() {
	char* words[3] = { "CODE", "COED", "CDEO" };
	int words_len = 3;
	char* word = "CODE";
	int ret = solution(words, words_len, word);

	printf("solution 함수의 반환 값은 %d입니다.\n", ret);
}

cos pro 2급 기출문제

github

 

구름 goormedu COS PRO 2급 기출문제 - C언어

[3차] 문제4) 단어의 오타 수정하기

반응형