코딩테스트

프로그래머스 - 대소문자 바꿔서 출력하기

오쟝 2023. 5. 17. 23:28
#include <stdio.h>
#define LEN_INPUT 10

	int main(void){
    char s1[20];
    scanf("%s", &s1);
    int len = strlen(s1);
    
    for(int i = 0; i<len; i++){
    	if(s1[i]>='A' && s1[i]<='Z') s1[i] = s1[i] + 32;
        else if(s1[i]>='a' && s1[i]<='z') s1[i] = s1[i] - 32;
    }
    printf("%s", s1);
    
    }

코드는 반복문 for와 조건문 if를 모두 사용한 재미있는 코드입니다.

차근차근 설명해보겠습니다.

 

1. 먼저 s1라는 이름을 가지고, 길이가 20인 string 변수 하나를 선언해줍니다.

2. scanf를 통해 s1 문자열을 입력받습니다.

3. 정수 len이라는 변수에 s1의 길이를 넣어줍니다.

4. 정수 i를 0부터 len 미만까지 i를 증가시켜주겠다는 반복문을 만듭니다.

5. 만약 s1의 i번째 문자가 'A'와 'Z' 사이를 모두 만족시키면 s1의 i번째 문자에 32를 더해줍니다.

6. 반대로 만약 s1의 i번째 문자가 'a'와 'z' 사이를 모두 만족시키면 s1의 i번째 문자에 32를 빼줍니다.

7. 반복문이 len만큼 반복이 되면 s1의 0부터 len-1번째 문자가 모두 조건문을 통과해 새로운 s1 문자열을 만듭니다.

8. 문자열 s1을 출력해줍니다.

 

** 주의할 점 **

1. s1을 모두 채울 때까지 반복해야하기 때문에 반복문을 써야합니다.

2. s1의 i번째에 s1의 i번째 + 32를 해주면 s1의 i번째의 대문자가 s1의 i번째가 됩니다.

3. s1의 i번째에 s1의 i번째 - 32를 해주면 s1의 i번째의 소문자가 s1의 i번째가 됩니다.

4. if문에 &&(AND)를 써주는 이유는 ||(OR)를 쓰게 되면 위아래 두 if문을 모두 만족하기 때문에 &&를 사용해줍니다.

5. i가 0부터 len 미만까지인 이유는 문자열을 셀 때는 0부터 세기 때문입니다.

6. 마지막에 s1을 출력하게 되면 s1의 i번째에 값을 계속 부여했기 때문에 대소문자가 바뀐 s1이 출력이 됩니다.