Iriton's log
[C++/Baekjoon 반복문] 25314번: 코딩은 체육과목 입니다 본문
문제
오늘은 혜아의 면접 날이다. 면접 준비를 열심히 해서 앞선 질문들을 잘 대답한 혜아는 이제 마지막으로 칠판에 직접 코딩하는 문제를 받았다. 혜아가 받은 문제는 두 수를 더하는 문제였다. C++ 책을 열심히 읽었던 혜아는 간단히 두 수를 더하는 코드를 칠판에 적었다. 코드를 본 면접관은 다음 질문을 했다. “만약, 입출력이 바이트 크기의 정수라면 프로그램을 어떻게 구현해야 할까요?”
혜아는 책에 있는 정수 자료형과 관련된 내용을 기억해 냈다. 책에는 long int는 4바이트 정수까지 저장할 수 있는 정수 자료형이고 long long int는 8바이트 정수까지 저장할 수 있는 정수 자료형이라고 적혀 있었다. 혜아는 이런 생각이 들었다. “int 앞에 long을 하나씩 더 붙일 때마다 4바이트씩 저장할 수 있는 공간이 늘어나는 걸까? 분명 long long long int는 12바이트, long long long long int는 16바이트까지 저장할 수 있는 정수 자료형일 거야!” 그렇게 혜아는 당황하는 면접관의 얼굴을 뒤로한 채 칠판에 정수 자료형을 써 내려가기 시작했다.
혜아가 바이트 정수까지 저장할 수 있다고 생각해서 칠판에 쓴 정수 자료형의 이름은 무엇일까?
입력
첫 번째 줄에는 문제의 정수 N이 주어진다. (4≤ N ≤ 1,000; N은 4의 배수)
출력
혜아가 N바이트 정수까지 저장할 수 있다고 생각하는 정수 자료형의 이름을 출력하여라.
풀이
초기 코드
#include <iostream>
#include <string>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
int N;
cin >> N;
string Nbyte = "";
for (int i = 0; i < (N / 4); i++) {
Nbyte += "long ";
}
Nbyte += "int";
cout << Nbyte;
return 0;
}
정답은 맞지만...
굳이 string을 써야 하나? 어차피 출력만 제대로 하면 된다고 생각해서 수정해 봤다.
수정 코드
#include <iostream>
using namespace std;
int main() {
int N;
cin >> N;
for (int i = 0; i < (N / 4); i++)
cout<<"long ";
cout << "int";
return 0;
}
시공간적인 효율성의 차이는 없어 보이는데
어쨌든 더 짧아진 코드가 보기 좋긴 하다.
'Problem Solving > C,C++' 카테고리의 다른 글
[C++/Baekjoon] 1253번: 좋다 (0) | 2023.05.03 |
---|---|
[C++/Baekjoon] 10813번: 공 바꾸기 (0) | 2023.04.05 |
[C++/Baekjoon] 10810번: 공 넣기 (0) | 2023.04.05 |
[C++/Baekjoon] 11659번: 구간 합 구하기 4 //C++ 시간초과 해결 (0) | 2023.04.04 |
[C++/Baekjoon] 1065번: 한수 (0) | 2023.03.27 |