본문 바로가기

C언어/백준 알고리즘

[백준/C언어] 10926번 - ??!

문제

 

 

코드
#include <stdio.h>	//라이브러리 호출
	
int	main() {	//main함수를 int형으로 설정

	char a[50];		//문자형 a를 50의 크기로 설정
	scanf("%s", a);		//입력 받은 문자열을 a에 저장
	printf("%s?\?!", a);		//입력받은 a와 ??!를 출력

	return 0;
}

 

해석

1행 : 라이브러리를 호출한다.

2행 : main 함수를 int 형식으로 설정한다

3행 : a라는 변수를 문자형으로 설정한다. 그리고 배열의 크기를 50으로 설정한다.

4행 : 입력받은 문자열을 a에 저장한다.

5행 : 입력받은 a에 ???!를 붙여서 출력한다.

6행 : 리턴 값을 0으로 지정해주고 정상적으로 종료한다.

 

참고사항

이번 문제에서는 c언어의 삼중자에 대해 알아야 문제를 풀 수 있었다.

삼중자라는 것을 모를 땐 "??!"를 어떤 변수안에 선언하고 출력하니까 되지 않았다.

그래서 인터넷 형님에게 물어보니 이 문제는 삼중자에 대해서 알고 있어야한다고 한다.

 

먼저 삼중자란 자주 쓰지 않는 문자의 조합으로 다른 문자를 표현하는 것이다.

삼중자의 특징은 두 개의 연속되는 ?(물음표)로 시작한다.

 

삼중자의 종료를 알아보자면

삼중자 문장 부호 문자
??= #
??( [
??/ \
??) ]
??' ^
??< {
??! |
??> }
??- ~

 

위의 표를 보면 삼중자는 ??와 어떤 특수문자가 쓰이면 새로운 문장 부호 문자가 출력되는 것을 볼 수 있다.

이를 방지하기 위해 \(역슬래쉬)를 사용하면 된다.

연속되는 두개의 물음표 사이에 \를 사용하면 삼중자로 인식되는 것을 막아주기 때문에 우리가 원하는 문자를 출력할 수 있다. ex) ?\?!

 

기억해야할 것

1. 변수에 문자형으로 값을 저장할 때 배열의 크기를 지정해주는 것

2. 문자형으로 입력받는 값은 앰퍼샌드를 사용하지 않는다는 것

3. 물음표가 두개 연속해서 쓰이는 것은 삼중자라는 것