https://school.programmers.co.kr/learn/courses/30/lessons/388351?language=cpp
ํ๋ก๊ทธ๋๋จธ์ค
SW๊ฐ๋ฐ์๋ฅผ ์ํ ํ๊ฐ, ๊ต์ก, ์ฑ์ฉ๊น์ง Total Solution์ ์ ๊ณตํ๋ ๊ฐ๋ฐ์ ์ฑ์ฅ์ ์ํ ๋ฒ ์ด์ค์บ ํ
programmers.co.kr
๋ฌธ์ ์ค๋ช
ํ๋ก๊ทธ๋๋จธ์ค ์ฌ์ดํธ๋ฅผ ์ด์ํ๋ ๊ทธ๋ ์์๋ ์ฌํ๊ทผ๋ฌด์ ํจ๊ป ์ถ๊ทผ ํฌ๋ง ์๊ฐ์ ์์ ๋กญ๊ฒ ์ ํ๋ ์ ์ฐ๊ทผ๋ฌด์ ๋ฅผ ์ํํ๊ณ ์์ต๋๋ค. ์ ๋ ์ ์ฐฉ์ ์ํด ์ค๋๋ถํฐ ์ผ์ฃผ์ผ ๋์ ๊ฐ์ ์ค์ ํ ์ถ๊ทผ ํฌ๋ง ์๊ฐ์ ๋ฆ์ง ์๊ณ ์ถ๊ทผํ ์ง์๋ค์๊ฒ ์ํ์ ์ฃผ๋ ์ด๋ฒคํธ๋ฅผ ์งํํ๋ ค๊ณ ํฉ๋๋ค.
์ง์๋ค์ ์ผ์ฃผ์ผ๋์ ์์ ์ด ์ค์ ํ ์ถ๊ทผ ํฌ๋ง ์๊ฐ + 10๋ถ๊น์ง ์ดํ๋ก ์ถ๊ทผํด์ผ ํฉ๋๋ค. ์๋ฅผ ๋ค์ด ์ถ๊ทผ ํฌ๋ง ์๊ฐ์ด 9์ 58๋ถ์ธ ์ง์์ 10์ 8๋ถ๊น์ง ์ถ๊ทผํด์ผ ํฉ๋๋ค. ๋จ, ํ ์์ผ, ์ผ์์ผ์ ์ถ๊ทผ ์๊ฐ์ ์ด๋ฒคํธ์ ์ํฅ์ ๋ผ์น์ง ์์ต๋๋ค. ์ง์๋ค์ ๋งค์ผ ํ ๋ฒ์ฉ๋ง ์ดํ๋ก ์ถ๊ทผํ๊ณ , ๋ชจ๋ ์๊ฐ์ ์์ 100์ ๊ณฑํ๊ณ ๋ถ์ ๋ํ ์ ์๋ก ํํ๋ฉ๋๋ค. ์๋ฅผ ๋ค์ด 10์ 13๋ถ์ 1013์ด ๋๊ณ 9์ 58๋ถ์ 958์ด ๋ฉ๋๋ค.
๋น์ ์ ์ง์๋ค์ด ์ค์ ํ ์ถ๊ทผ ํฌ๋ง ์๊ฐ๊ณผ ์ค์ ๋ก ์ถ๊ทผํ ๊ธฐ๋ก์ ๋ฐํ์ผ๋ก ์ํ์ ๋ฐ์ ์ง์์ด ๋ช ๋ช
์ธ์ง ์๊ณ ์ถ์ต๋๋ค.
์ง์ n๋ช
์ด ์ค์ ํ ์ถ๊ทผ ํฌ๋ง ์๊ฐ์ ๋ด์ 1์ฐจ์ ์ ์ ๋ฐฐ์ด schedules, ์ง์๋ค์ด ์ผ์ฃผ์ผ ๋์ ์ถ๊ทผํ ์๊ฐ์ ๋ด์ 2์ฐจ์ ์ ์ ๋ฐฐ์ด timelogs, ์ด๋ฒคํธ๋ฅผ ์์ํ ์์ผ์ ์๋ฏธํ๋ ์ ์ startday๊ฐ ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง๋๋ค. ์ด๋ ์ํ์ ๋ฐ์ ์ง์์ ์๋ฅผ return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์.
๋ฌธ์ ํด์ค
์ด ๋ฌธ์ ์์ ์ค์ํ ์ ์ "์๊ฐ ํ์ ๋ฐฉ๋ฒ" ์ด๋ค.
์๊ฐ์ ๋ฐฑ์ ์๋ฆฌ ์, ๋ถ์ ์ญ๊ณผ ์ผ์ ์๋ฆฌ ์๋ฅผ ์ฌ์ฉํ๋ค.
๋ฐ๋ผ์ ์ง๊ฐ์ ํ์ธํ ๋ ๋จ์ํ Schedule ์๊ฐ์ + 10 ์ ํ๋ ๊ฒ์ด ์๋๋ผ,
+10์ ํ์ ๋ 60๋ถ ์ด์์ด๋ฉด ์๊ฐ์ ์ฌ๋ฆฌ๊ณ , ๋๋จธ์ง๋ฅผ ๋ถ์ ๋ฐ์ํด์ผ ํ๋ค.
#include <string>
#include <vector>
using namespace std;
int GetMaximumScheduleTime(int time)
{
int scheduleHour = time / 100;
int scheduleMin = time % 100;
scheduleMin += 10;
if(scheduleMin >= 60)
{
++scheduleHour;
scheduleMin %= 60;
}
return scheduleHour*100 + scheduleMin;
}
int solution(vector<int> schedules, vector<vector<int>> timelogs, int startday) {
int answer = 0;
for(int p = 0; p < timelogs.size(); ++p)
{
bool wasLate = false;
for(int d = 0; d < timelogs[p].size(); ++d)
{
// ์์ผ ํ์ธ
int today = (startday+d) % 7;
if(today == 6 || today == 0)
continue;
// ์ง๊ฐํ์ธ
if(GetMaximumScheduleTime(schedules[p]) < timelogs[p][d])
{
wasLate = true;
break;
}
}
if(!wasLate)
++answer;
}
return answer;
}
Claude์ ์ฝ๋ ์์ ์ ์์ฒญํ ํ ์ฝ๋์ด๋ค.
#include <string>
#include <vector>
using namespace std;
// ์ต๋ ํ์ฉ ๋์ฐฉ ์๊ฐ์ ๊ณ์ฐํ๋ ํฌํผ ํจ์ (์ค์ผ์ค + 10๋ถ)
inline int GetMaximumScheduleTime(int time) {
int scheduleHour = time / 100;
int scheduleMin = time % 100;
scheduleMin += 10;
if(scheduleMin >= 60) {
++scheduleHour;
scheduleMin %= 60;
}
return scheduleHour * 100 + scheduleMin;
}
// ๋ฉ์ธ ํด๊ฒฐ ํจ์
int solution(vector<int> schedules, vector<vector<int>> timelogs, int startday) {
int answer = 0;
const int PEOPLE_COUNT = timelogs.size();
// ์ต๋ ์ค์ผ์ค ์๊ฐ์ ๋ฏธ๋ฆฌ ๊ณ์ฐํ์ฌ ์ฌ๊ณ์ฐ์ ๋ฐฉ์ง
vector<int> maxScheduleTimes(PEOPLE_COUNT);
for (int p = 0; p < PEOPLE_COUNT; ++p) {
maxScheduleTimes[p] = GetMaximumScheduleTime(schedules[p]);
}
// ์ ๋ ์ง๊ฐํ์ง ์์ ์ฌ๋ ์ ๊ณ์ฐ
for (int p = 0; p < PEOPLE_COUNT; ++p) {
bool wasLate = false;
for (int d = 0; d < timelogs[p].size(); ++d) {
// ์์ผ ํ์ธ (์ฃผ๋ง ๊ฑด๋๋ฐ๊ธฐ)
int today = (startday + d) % 7;
if (today == 6 || today == 0) // ์ฃผ๋ง (ํ ์์ผ ๋๋ ์ผ์์ผ)
continue;
// ์ง๊ฐ ํ์ธ
if (maxScheduleTimes[p] < timelogs[p][d]) {
wasLate = true;
break; // ํ ๋ฒ์ด๋ผ๋ ์ง๊ฐํ์ผ๋ฉด ๋ ์ด์ ํ์ธํ ํ์ ์์
}
}
if (!wasLate)
++answer;
}
return answer;
}
- inline ํค์๋๋ฅผ ํฌํผ ํจ์์ ์ถ๊ฐํ์ฌ ์ปดํ์ผ๋ฌ์๊ฒ ์ธ๋ผ์ธํ๋ฅผ ์ ์ํด ์ฑ๋ฅ ํฅ์
- ๊ฐ ์ฌ๋๋ณ ์ต๋ ์ค์ผ์ค ์๊ฐ์ ๋ฏธ๋ฆฌ ๊ณ์ฐํ์ฌ ๋ฐ๋ณต์ ์ธ ์ฌ๊ณ์ฐ ๋ฐฉ์ง
๊ฒฐ๊ณผ!
'๐ฅ๏ธ Study Note > Coding Test' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ๋ก๊ทธ๋๋จธ์ค] ๋ด์ค ํด๋ฌ์คํฐ๋ง(C++) (0) | 2025.04.15 |
---|---|
[๋ฐฑ์ค 1926] ๊ทธ๋ฆผ(C++) (0) | 2023.11.18 |
[๋ฐฑ์ค 1931] ํ์์ค ๋ฐฐ์ (C++) (0) | 2023.10.26 |
[๋ฐฑ์ค 1003] ํผ๋ณด๋์น ํจ์ (C++) (0) | 2023.10.25 |
[Hacker Rank] Organizing Containers of Balls (C++) (1) | 2023.10.09 |