오늘은 PCCP 기출문제를 모두 완료하고, PCCE 기출문제 시리즈의 시작인 1번 문자 출력을 포스팅하려고 한다. 근데 문제를 보고? 할 정도로 너무 당황스러웠다... 너무 쉬웠기 때문이다. 하지만 C++를 처음 하는 개발자에게는 필요할 수도 있다는 생각이 들어, 간단하게 정답이 왜 그렇게 나오는지 간단하게 설명도 하고, 입 출력에 관한 내용도 공유하고자 한다.
알고리즘 난이도 및 시간 ( ※ 개인적인 의견 )
- 난이도 : Level 0 ( ※ Min : 0, Max : 10 )
- 풀이 시간 : 1분
- 제출 횟수 : 1번
- 풀이 결과 : Pass
문제 설명
문제를 보면 너무 짧아서 당황스러겠지만, 정말 말 그대로 코드에 변수를 데이터를 저장하고, 출력 예시와 같이 출력되게 하라는 문제다.
그나마 아래 출력에서 유의해야 할 점이 있다면 라인을 넘겨서 출력을 해야 한다는 것이다. 문제를 출력할 때 라인을 변경할 수 있는 방법은 문자열 뒤에 "\n"을 하는 것과 endl을 통해 라인을 바꾸는 것이다.
그러면 여기서 왜 굳이 라인을 바꿀 수 있는 방법이 2개나 있는 거지?라는 생각이 들게 될 수 있다. 여담 : 새로 들어오는 팀원분들에게도 늘 말하는 것이지만, 내가 코드를 구현할 때 내가 작성한 코드를 다 이해하고 있는지? 그리고 내가 사용하는 방법이 올바른지?를 생각하면서 구현을 해야 한다는 것이다. 물론 정답은 없다. 하지만 더 효율적인 방법은 늘 존재할 수 있기 때문에 공부는 쉬지 않아야 한다. 두 방법의 차이는 아래와 같다.
- \n : 따로 입출력을 위해 사용된 임시 버퍼를 비우지 않는다.
- endl : 출력을 위해 사용된 임시 버퍼를 비운다.
그러면 처음 개발하는 사람은 무슨 버퍼?라는 생각을 할 수 있다. 보통 컴퓨터는 키보드라는 하드웨어로부터 문자를 입력받는다. 그러면 문자를 받을 때마다 바로바로 전달을 할까? 어떻게 설계되었냐에 따라 다를 수 있지만, 통상적으로 버퍼에 저장하였다가 일정 용량이 다 차거나 전달하라는 명령( 예시 : endl )이 있을 경우 전달한다.
여기서 이해가 된 사람들은 이렇게 생각할 수 있다. 그러면 \n이 endl 보다 출력을 할 때 라인 변경이 많다면 조금 더 빠르겠구나? 와 같은 생각이다. 혹시나 내용을 보고 궁금한 점이 있다면 댓글 작성 부탁한다.
문제풀이
해당 문제에서는 endl을 통해 매번 작성할 수 없는 문제다. 왜냐하면 특이하게 빈칸을 채우는 문제이기 때문이다. 그렇게 때문에 우리가 배운 방법 중 "\n"을 사용하여 아래와 같이 풀면 된다.
#include <iostream>
using namespace std;
int main(void) {
string message = "Let's go!";
cout << "3\n" << "2\n" << "1" << endl;
cout << message << endl;
return 0;
}
결과
문제 링크 : https://school.programmers.co.kr/learn/courses/30/lessons/340207?language=cpp
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
'알고리즘 > 프로그래머스' 카테고리의 다른 글
프로그래머스 - [PCCE 기출문제] 3번 / 수 나누기 C++ (0) | 2024.10.27 |
---|---|
프로그래머스 - [PCCE 기출문제] 2번 / 각도 합치기 C++ (2) | 2024.10.19 |
프로그래머스 - [PCCP 기출문제] 4번 / 수식 복원하기 C++ (0) | 2024.10.15 |
프로그래머스 - [PCCP 기출문제] 3번 / 충돌위험 찾기 C++ (0) | 2024.10.14 |
프로그래머스 - [PCCP 기출문제] 2번 / 퍼즐 게임 챌린지 C++ (1) | 2024.10.14 |