본문 바로가기
백준 문제풀이

BOJ/17269

by alscks 2024. 1. 6.

 

이름궁합 테스트

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>

int chartoint(char s);

int main(void) {

char name1[100]; char name2[100];
int iname1[100]; int iname2[100];
int len1; int len2;

scanf("%d %d", &len1, &len2);
scanf("%s %s", name1, name2);

for (int i = 0; i < len1; i++) {//문자를 숫자로 변환
iname1[i] = chartoint(name1[i]);
}
for (int i = 0; i < len2; i++) {//문자를 숫자로 변환
iname2[i] = chartoint(name2[i]);
}

int name_sum[200];

int arrflag = 0;
int length = (len1 > len2) ? len1 : len2;
for (int i = 0; i < length; i++) {

if (i<len1) {
name_sum[arrflag] = iname1[i];
arrflag++;
}
if (i<len2) {
name_sum[arrflag] = iname2[i];
arrflag++;
}
}

for (int k = 0; k < len1 + len2 - 2; k++) {

for (int j = 0; j < len1 + len2-1; j++) {
int sumii;
sumii = name_sum[j] + name_sum[j + 1];
if (sumii > 9) {
name_sum[j] = sumii % 10;
}
else {
name_sum[j] = sumii;
}
}
name_sum[len1 + len2 - k-1] = 0;
}
printf("%d%%",10*name_sum[0]+ name_sum[1]);

return 0;

}

int chartoint(char s) {

int in;

switch (s)
{
case 'E':
in = 4;
break;
case 'A': case 'F': case 'H': case 'K': case 'M':
in = 3;
break;
case 'B': case 'D': case 'N': case 'P': case 'Q': case 'R': case 'T': case 'X': case 'Y':
in = 2;
break;
default:
in = 1;
break;
}

return in;
}

 

while문 사용하여 참조할 수 없는 배열을 참조하게 되면 visual studio에서는 바르게 실행되어도 run time초과(out_of bound)가 발생할 수 있다. 오류가 계속해서 발생할 때는 참조할 수 없는 배열을 참조하려 하는지 살펴보아야 한다.

 

삼항연산자 ( 조건 ) ? A : B

-> 조건이 참이면 A반환, 아니면 B반환.

 

'백준 문제풀이' 카테고리의 다른 글

BOJ/1110  (0) 2024.01.07
BOJ/1652  (0) 2024.01.07
BOJ/2750  (1) 2024.01.06
BOJ/2979  (0) 2024.01.06
BOJ/10808  (2) 2024.01.06