1. 2577 Hello World
가장 기본적인 문제이다. '성공'표시를 남기기 위해 제출하였다.
이 문제로 C++을 처음 접한다면
표준 라이브러리의 입출력 클래스 iostream 헤더파일 선언.
std 네임스페이스의 출력함수 cout참조, 문자열 Hello World!출력 (문제 이름과는 달리 !가 있다. )
#include <iostream>
int main()
{
std::cout << "Hello World!";
return 0;
}
2. 10699 오늘 날짜
https://www.acmicpc.net/problem/10699
서울의 오늘 날짜를 "YYYY-MM-DD"형식을 출력하는 문제이다.
이 문제를 풀기 위해 C++의 시간 관련 개념을 배워야했다.
include <ctime>을 선언하면 C의 <time.h>헤더를 포함하고 std 네임스페이스에도 선언된다고 한다.
https://learn.microsoft.com/ko-kr/cpp/standard-library/ctime?view=msvc-170
처음에 기본적인 년, 월, 일 출력이 어떻게 되는지 알아보기 위해 출력해보았다.
+포인터라는 개념을 알아야한다. C언어를 배우며 가장 핵심이 되었던 내용이라고 생각한다.
당시에 교수님께서 다른 언어를 배우면 포인터라는 개념이 따로 존재하지 않는다고 하셨는데, C++에는 존재하였다.
내일은 포인터에 관한 내용을 복습해야겠다.
#include <iostream>
#include <ctime>
int main()
{
std::time_t timer = time(NULL);
struct tm t;
localtime_s(&t, &timer);
std::cout << t.tm_year <<"년";
std::cout << t.tm_mon <<"월";
std::cout << t.tm_mday <<"일";
return 0;
}
년도에 +1900과 월에 +1을 해줘야겠다.
#include <iostream>
#include <ctime>
int main()
{
std::time_t timer = time(NULL);
struct tm t;
localtime_s(&t, &timer);
std::cout << t.tm_year+1900 <<"-";
std::cout << t.tm_mon+1 <<"-";
std::cout << t.tm_mday;
return 0;
}
visual studio 상으로는 오류가 없었지만, 백준 채점에는 컴파일에러가 떴다.
다른 사람들의 풀이를 보니 localtime으로 사용했다. localtime으로 사용하면 visualstudio에서는 오류가 나지만 백준에서는 정답으로 뜬다고 한다. 내일 localtime과 포인터의 활용에 대하여 더 공부하며 다시 풀어봐야겠다.
+다시 푼 내용
localtime 뿐만 아니라 더 필요한 부분이 있었다.
위의 코드로 출력했을 경우 현재 날짜인 2023-07-15가 출력되어야 하지만, 2023-7-15가 출력되었다.
이를 고치기 위하여 cout.width와 cout.fill을 사용해야했다.
#include <iostream>
#include <ctime>
int main()
{
std::time_t timer = time(NULL);
struct tm t;
localtime_s(&t, &timer);
std::cout << t.tm_year + 1900 << "-";
std::cout.width(2);
std::cout.fill('0');
std::cout << t.tm_mon + 1 << "-";
std::cout << t.tm_mday;
//struct tm* t = localtime(&timer);
//std::cout << t->tm_year + 1900 << "-";
//std::cout << t->tm_mon + 1 << "-";
//std::cout << t->tm_mday;
return 0;
}
2자리수로 고정하기 위하여 cout.width(2);, 빈 자리를 0으로 채우기 위하여 cout.fill('0');을 추가하였다.
'알고리즘 > 백준 BOJ' 카테고리의 다른 글
[BOJ/C#] 1152 단어의 개수 (0) | 2023.08.16 |
---|---|
[ BOJ/C++] 10171 고양이, 10172 개 (0) | 2023.07.25 |
[BOJ C++] 11382 꼬마정민, 자료형 (0) | 2023.07.13 |
[BOJ C++] 10869 사칙연산, 줄바꿈 출력하기 (0) | 2023.07.13 |
[BOJ C++ ] 1008 A/B, 소수점 자리 고정하기 precision과 fixed (0) | 2023.07.12 |