문제
해석
입력을 받은 문자열에 "??! " 문자열을 추가해서 출력하는 문제입니다. 문자열을 출력할 줄만 안다면 크게 고민 없이 문제를 해결할 수 있습니다.
풀이
C++에서는 문자열을 처리하는 방법이 두 가지입니다. char형과 string형인데 저는 보통 string함수를 이용합니다. 이유는 string 변수는 (char형의 경우 배열)를 기본값으로 초기화하지 않아도 되며. length()등 문자열을 처리하는 다양한 함수가 존재하기 때문입니다.
또한 string는 입력받는 데이터의 길이에 상관하지 않지만 char은 선언 시 크기를 선언해줘야 하기 때문에 번거롭습니다.
Case 1 : string 타입으로 해결하기
#include<iostream>
using namespace std;
int main(){
string str;
cin >> str;
cout << str << "??!" <<endl;
}
str을 string 타입으로 선언 후 데이터를 받고 바로 출력하면 됩니다. cout의 출력 방식만 안다면 크게 문제없이 코드를 다음과 같이 작성하셨을 겁니다.
Case 2 : char 타입으로 해결하기
#include<iostream>
using namespace std;
int main(){
char str[51];
cin >> str;
cout << str << "??!" <<endl;
}
char형으로 해결하는 코드입니다. str배열의 크기를 51로 설정했음을 주의해야 합니다. 아이디의 길이가 50을 넘지 않는다는 말은 50개의 문자가 들어올 수 있다는 뜻이고, 문자열 입력 후 문자 50개가 배열에 들어오면 마지막에 '\0'이 들어오기 때문에 50 + 1로 배열의 크기를 설정했습니다.
또한 str을 cin으로 받아 자동으로 문자열 마지막에 '\0'을 추가해 줍니다. 때문에 출력 시 char형의 빈 공간을 신경 쓰지 않아도 되기에 이번 문제에 한해서는 배열의 초기화를 생각하지 않아도 됩니다.
정리
문자열을 입력받고 출력하는 연습을 하는 문제입니다. char과 string의 차이점을 생각하고, char형의 경우 문자열 마지막에 ' \0 '을 저장해야 하기 때문에 받을 수 있는 최대 문자에 +1 한 크기의 배열을 선언해야 함을 주의합니다.
'프로그래밍 > 코딩 테스트 연습' 카테고리의 다른 글
[백준] 10430번 : 나머지 (1단계) (C++) (1) | 2024.01.05 |
---|---|
[백준] 18108번 : 1998년생인 내가 태국에서는 2541년생?! (1단계) (C++) (1) | 2024.01.05 |
[백준] 10869번 : 사칙연산 (1단계) (C++) (0) | 2024.01.04 |
[백준] 1008번 : A / B (1단계) (C++) (2) | 2024.01.04 |
[백준] 10998번 : A * B (1단계) (C++) (1) | 2024.01.03 |