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

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

by M개발자 2021. 5. 14.
반응형

단어의 오타 수정하기


문제 설명

 

영어 단어를 외위기 위해 단어를 반복하여 타이핑합니다. 그런데, 타이핑하고 보니 오타가 많습니다. 오타를 수정하려면 문제를 몇 개 바꿔야 하는지 구하려 합니다. 예를 들어, "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) 단어의 오타 수정하기

반응형

댓글