※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※

 

이번에 볼 문제는 백준 5635번 문제인 생일이다.
문제는 아래 링크를 확인하자.

https://www.acmicpc.net/problem/5635 

 

5635번: 생일

어떤 반에 있는 학생들의 생일이 주어졌을 때, 가장 나이가 적은 사람과 가장 많은 사람을 구하는 프로그램을 작성하시오.

www.acmicpc.net

생일을 yyyymmdd의 꼴로 나타내면, 나이가 가장 많은 사람은 yyyymmdd가 가장 작을 것이고, 나이가 가장 적은 사람은 yyyymmdd가 가장 클 것이다.

 

나이가 가장 많은 사람과 적은 사람만 구하면 되므로, 매번 입력을 받을 때마다 받은 정보를 yyyymmdd꼴의 문자열로 바꾸고 비교를 통해 사람을 갱신해주는 것으로 문제를 풀 수 있다.

 

아래는 제출한 소스코드이다.

#include <iostream>
#include <string>
using namespace std;

int main() {
	ios::sync_with_stdio(0);
	cin.tie(0);

	int N; cin >> N;
	string oldest = "99999999", youngest = "00000000", youngestname, oldestname;
	while (N--) {
		string s, dd, mm, yyyy; cin >> s >> dd >> mm >> yyyy;
		string birthday = yyyy;
		if (mm.size() == 1) birthday += "0"; birthday += mm;
		if (dd.size() == 1) birthday += "0"; birthday += dd;
		if (birthday < oldest) oldest = birthday, oldestname = s;
		if (birthday > youngest) youngest = birthday, youngestname = s;
	}
	cout << youngestname << '\n' << oldestname;
}
728x90

'BOJ' 카테고리의 다른 글

[BOJ 14624 // C++] 전북대학교  (0) 2021.06.01
[BOJ 1408 // C++] 24  (0) 2021.06.01
[BOJ 2711 // C++] 오타맨 고창영  (0) 2021.06.01
[BOJ 4999 // C++] 아!  (0) 2021.06.01
[BOJ 5576 // C++] 콘테스트  (0) 2021.06.01

+ Recent posts