-
Notifications
You must be signed in to change notification settings - Fork 2
25-Seol-Munhyeok #86
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. Weโll occasionally send you account related emails.
Already on GitHub? Sign in to your account
25-Seol-Munhyeok #86
Conversation
|
๋ฌธ์ ์ ์ค๋ฅ๊ฐ ์์๋ ๋ณด๋ค์. ์ ๋ ํ๊ณ ๋์ ์ง๋ฌธ๊ฒ์ํ์ ๋ค์ด๊ฐ๋ดค๋๋ ๋ฌธ์ ์ค๋ฅ์ ๋ํ ์๊ธฐ๊ฐ ๋๋ถ๋ถ์ด์ด์ ๋๋์ต๋๋ค. ์ ๊ฐ ํผ ๋ฐฉ์์ด ์ด ์ข๊ฒ ์ ๊ฑธ๋ฆฌ๊ณ ๋์ด๊ฐ๋ ๋ฐฉ์์ด์์ด์ ํฌ๊ฒ ์ ๊ฒฝ์ ์ ์ผ๋ ๊ฒ ๊ฐ์ต๋๋ค. ์ ๋ ํฌ๊ฒ ๋ฌธ์์ด ์ ์ฒ๋ฆฌ, ์๊ฐ ๋จ์ ์ฒ๋ฆฌ, ๊ธธ์ด์ ๋ฐ๋ฅธ ๋ฌธ์์ด ์์ฑ ์ด 3๊ฐ์ ์ฃผ๋ชฉํด์ ๋ฌธ์ ๋ฅผ ํผ ๊ฒ ๊ฐ์ต๋๋ค. ํจ์ ๋จ์๋ก ๋ง๋ ๋ค์์ check ํจ์์์ ์ ๋ถ ๋ชจ์์ ์ฌ๋ฐ๋ฅธ ๊ฐ๋ค๋ง ans์ ๋ด์ ๋ค์, sortํจ์๋ฅผ ์ด์ฉํด ์ ๋ ฌํด์ ๋งจ ์ ๊ฐ์ returnํ์ต๋๋ค. ๋ฌธ์์ด ์ ์ฒ๋ฆฌ๋ฅผ ํ ๋, ์๋ก์ด ๋ฌธ์์ด์ ๊ธฐ์กด ๋ฌธ์์ด์ ์ถ๊ฐํ๋ฉด์ #์ด ๋์ค๋ฉด ๋งจ ๋ท๋ถ๋ถ์ ์๋ฌธ์๋ก ๋ฐ๊พธ๋ ์์ผ๋ก ์ฒ๋ฆฌํ๋๋ฐ, ์ด๋์ B#๊ฐ์ ์ผ์ด์ค๊ฐ ๋์๋ ๊ทธ๋ฅ ํต๊ณผ๊ฐ ๋๋ ๊ฒ ๊ฐ์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ง์ง๋ง ์ ๋ ฌ ์กฐ๊ฑด์์ ์กฐ๊ฑด์ด ์ผ์นํ๋ ์์ ์ด ์ฌ๋ฌ ๊ฐ์ผ ๋์๋ ๋ผ๋์ค์์ ์ฌ์๋ ์๊ฐ์ด ์ ์ผ ๊ธด ์์ ์ ๋ชฉ์ ๋ฐํํ๋ค. ์ฌ์๋ ์๊ฐ๋ ๊ฐ์ ๊ฒฝ์ฐ ๋จผ์ ์ ๋ ฅ๋ ์์ ์ ๋ชฉ์ ๋ฐํํ๋ค. ๋ผ๋ ๋ง์ด ์๋๋ฐ, ์ ๋ต ๋ฒกํฐ๋ฅผ ๋ง๋ค ๋ ์ผ๋จ ์ ๋ ฅ๋ ์์ ์์๋ก ans์ ๋ฃ์ ํ ์ฌ์ ์๊ฐ์ ๋ํด์ ์ ๋ ฌํ๋๋ฐ ์ฌ์ ์๊ฐ์ด ๊ฐ์ ๊ฒฝ์ฐ unstable sort๋ผ๋ฉด ์ ๋ ฅ๋ ์์๊ฐ ์์๋ ์ ์๊ฒ ๋ค ์ถ์ด์ stable_sort๋ฅผ ์ฌ์ฉํ์ต๋๋ค...๋ง ๊ทธ๋ฅ sort๋ฅผ ์จ๋ ํต๊ณผ๋ ๋๋ค์. ๐ ์งํผํฐ ํผ์ ๋ก๋ ์์ผ ์๋ ์์ด์ stable์ ์ฐ๋ ๊ฒ ์์ ํ๋ค๊ณ ๋ ํ์ง๋ง ๋๋ฌด ๊น๊ฒ ์๊ฐํ ๊ฒ ๊ฐ๊ธฐ๋ ํฉ๋๋ค. ๋ฌธ์์ด์ ํ ๋๋ง๋ค ๊ตฌํํด์ผ ํ ์ฌํญ์ด ๋ง์์ ํธํก์ด ๊ธธ์ด์ง๋ ๊ฒ ๊ฐ๋ค์. ์ฐ์ต ๋ ๋ง์ด ํด์ผ๊ฒ ์ต๋๋ค. ์๋๋ ์ ์ถ ์ฝ๋์ ๋๋ค. ๊ณ ์ํ์ จ์ด์! ๋ฐฉ๊ธ๊ทธ๊ณก / c++#include <bits/stdc++.h>
using namespace std;
vector<pair<int,string>> ans;
bool comp(pair<int,string> a1, pair<int,string> a2)
{
return a1.first > a2.first;
}
int timetosec(string str)
{
int time = stoi(str.substr(0,2));
int sec = stoi(str.substr(3,2));
return time * 60 + sec;
}
string makemusic(int len, string origin)
{
int n = origin.length();
// ์ต์๊ธธ์ด ์ด์์ ์ํ ๋ฐ๋ณตํ์
int repeat = (len + n - 1) / n;
string result = "";
for (int i = 0; i < repeat; i++)
{
result += origin;
}
// ๊ธธ์ด๋งํผ๋ง ์๋ผ์ return
return result.substr(0, len);
}
string preprocess(string origin)
{
string newstring = "";
for(int i = 0; i < origin.length(); i++)
{
if(origin[i] == '#')
{
newstring.back() = tolower(newstring.back());
}
else
{
newstring += origin[i];
}
}
return newstring;
}
void check(string minfo, string m)
{
vector<string> info;
stringstream ss(minfo);
string temp;
while (getline(ss, temp, ','))
{
info.push_back(temp);
}
int playtime = timetosec(info[1]) - timetosec(info[0]);
string musname = info[2];
string makenmusic = makemusic(playtime, preprocess(info[3]));
if(makenmusic.find(m) != string::npos)
{
ans.push_back({playtime,info[2]});
}
}
string solution(string m, vector<string> musicinfos) {
string newm = preprocess(m);
for(auto i : musicinfos)
{
check(i,newm);
}
if(ans.empty())
{
return "(None)";
}
stable_sort(ans.begin(),ans.end(),comp);
return ans[0].second;
}
|
|
@hyeokbini ํ์ด์ฌ์ ๋ด๋ถ์ ์ผ๋ก Timsort ์๊ณ ๋ฆฌ์ฆ (๋จธ์ง ์ ๋ ฌ + ์ฝ์
์ ๋ ฌ์ ๊ฒฐํฉํ ํ์ด๋ธ๋ฆฌ๋)์ ์ฌ์ฉํ๊ณ ํญ์ ์์ ์ ๋ ฌ์ด ๋ณด์ฅ๋๋ค๊ณ ํฉ๋๋ค. ์์ ์ด๋ฐ ๊ฑฐ๋ฅผ ๊ณ ๋ คํ์ง ์๊ธฐ์ํด์๋ ์ ๊ฐ ํ ๋ฐฉ์๋๋ก ์ ๋ ฅ ์์๋๋ก ๋น๊ตํด๋ณผ ๋, ์ ๋ต ์ฌ๋ถ์ ๋์์ ์ต๋ ๊ธธ์ด๋ฅผ ๊ฐฑ์ ํ๋ ๋ฐฉ์์ผ๋ก ํ๋ฉด ๋ ๊ฑฐ ๊ฐ์ต๋๋ค!! |
|
๊ฐ๋ง์ ๋ฌธ์์ด ๋ค๋ฃจ๋ ์ฐ์ต์ ํ ์ ์์์ต๋๋ค! ์ ๋ #๋ถ์ ๋ถ๋ถ์ - 'A'๋ฅผ ํด์ค์ ์ฒ๋ฆฌํ์ต๋๋ค. ์๋ฌธ์๋ก ๋ณํํ๋ ๋ฐฉ๋ฒ๋ ์์ ๊ฒ ๊ฐ์ต๋๋ค. ์๊ณ ํ์ จ์ต๋๋ค! ๋ฐฉ๊ธ ๊ทธ ๊ณก#include<bits/stdc++.h>
using namespace std;
vector<string> split(string input) {
vector<string> answer;
stringstream ss(input);
string temp;
while(getline(ss, temp, ',')) {
answer.push_back(temp);
}
return answer;
}
struct music {
int time;
string title, sound;
};
// ์ํ ๋ถ๋ฆฌ
string seperate(string sheet) {
string answer = "";
for(int i = 0; i < sheet.size() - 1; i++) {
if(sheet[i] == '#') continue;
if(sheet[i + 1] == '#') answer += sheet[i] - 'A';
else answer += sheet[i];
}
if(sheet[sheet.size() - 1] != '#') answer += sheet[sheet.size() - 1];
return answer;
}
bool compare(music &a, music &b) {
return a.time > b.time;
}
string solution(string m, vector<string> mv) {
string res = "(None)";
vector<music> v;
for(int i = 0; i < mv.size(); i++) {
vector<string> music = split(mv[i]);
string start = music[0]; string end = music[1];
int startTime = stoi(start.substr(0, 2)) * 60 + stoi(start.substr(3, 5));
int endTime = stoi(end.substr(0, 2)) * 60 + stoi(end.substr(3, 5));
int playTime = endTime - startTime;
string title = music[2]; string sheet = music[3];
string note = seperate(sheet);
int a = playTime / note.size(); int b = playTime % note.size();
string sound = "";
for(int i = 0; i < a; i++) {
sound += note;
}
sound += note.substr(0, b);
v.push_back({playTime, title, sound});
}
string target = seperate(m);
vector<music> tv;
for(int i = 0; i < v.size(); i++) {
string sound = v[i].sound;
size_t pos = sound.find(target);
if(pos != string::npos) {
tv.push_back(v[i]);
}
}
if(!tv.empty()) {
sort(tv.begin(), tv.end(), compare);
res = tv[0].title;
}
return res;
}
|
๐ ๋ฌธ์ ๋งํฌ
๋ฐฉ๊ธ๊ทธ๊ณก
https://school.programmers.co.kr/learn/courses/30/lessons/17683
โ๏ธ ์์๋ ์๊ฐ
25๋ถ
โจ ์๋ ์ฝ๋
์ฃผ์: ์ด ๋ฌธ์ ์ ํ ์คํธ์ผ์ด์ค ํ ๊ฐ๊ฐ ์ข ์ด์ํฉ๋๋ค.
๋ฌธ์ ์กฐ๊ฑด์ด "๋ค์ค๊ฐ ๊ธฐ์ตํ ๋ฉ๋ก๋์ ์ ๋ณด์ ์ฌ์ฉ๋๋ ์์ C, C#, D, D#, E, F, F#, G, G#, A, A#, B 12๊ฐ์ด๋ค." ๊ฐ ์๋๋ผ,
"๋ค์ค๊ฐ ๊ธฐ์ตํ ๋ฉ๋ก๋์ ์ ๋ณด์ ์ฌ์ฉ๋๋ ์์ C, B#, C#, D, D#, E, E# F, F#, G, G#, A, A#, B 14๊ฐ์ด๋ค."
๋ผ๊ณ ์ดํดํ๊ณ ํ์ด์ผํฉ๋๋ค.
๊ฐ๋จํ ๋ฌธ์์ด ๊ตฌํ ๋ฌธ์ ์ ๋๋ค.
์ ์ค์์ #์ด ๋ถ์ ์์ ๋ ๊ธ์๋ก ์ฒ๋ฆฌ๋๊ธฐ๋ ํ๊ณ , ๋ฌธ์์ด ํฌํจ ์ฌ๋ถ๋ฅผ ์กฐ์ฌํ ๋, C์ธ์ง C#์ธ์ง ๊ตฌ๋ถ์ด ์๋๋ ๋ฌธ์ ๊ฐ ์๊ธฐ ๋๋ฌธ์ #์ด ๋ถ์ ์์ ์ ๋ถ ์๋ฌธ์๋ก ๋ณ๊ฒฝํ์ต๋๋ค.
์ด ์์ ์ ์ฌ์ ์๊ฐ๋งํผ ์์ ๋ถ์ฌ์ ์ฐ์ฅํ๊ฑฐ๋ ์๋๋ฉด ์ค๊ฐ์์ ์๋ผ์ผํ๊ธฐ ๋๋ฌธ์ HH:MM ํ์์ SEC์ผ๋ก ๋ณ๊ฒฝํ๋ ํจ์๋ฅผ ๊ตฌํํฉ๋๋ค.
๊ทธ ํ, ์์ ์ ์ฌ์ ์๊ฐ์ ๋ฐ๋ผ ์์ ๋ถ์ฌ์ ์ฐ์ฅํ๊ฑฐ๋ ์ค๊ฐ์์ ์๋ผ์ฃผ๋ ํจ์๋ฅผ ๊ตฌํํฉ๋๋ค.
์๋ฅผ๋ค์ด, ์์ด
CDEFGAB๋ก 7๋ถ์ง๋ฆฌ์ธ๋ฐ 15๋ถ ์ฌ์๋์์ผ๋ฉด, 15 // 7 = 2๋ฒ ๊ฐ์ ๊ฑธ ๋ถ์ด๊ณ , 15 % 7 = 1๋ฒ ์์ ์๋ ์์ ๋ ๋ถ์ด๋ฉด ๋ฉ๋๋ค.๋ง์ง๋ง์ผ๋ก
musicinfos๋ฅผ ์์๋๋ก ํ์ํ๋ฉด์ ์ ๋ณด์์ ๊ธฐ์ตํ ๋ฉ๋ก๋๊ฐ ํฌํจ๋์ด์๋์ง๋ฅผ ํ๋ํ๋ ํ์ธํฉ๋๋ค. ์กฐ๊ฑด์ด ์ผ์นํ๋ ์์ ์ด ์ฌ๋ฌ ๊ฐ์ผ ๋์๋ ๋ผ๋์ค์์ ์ฌ์๋ ์๊ฐ์ด ์ ์ผ ๊ธด ์์ ์ ๋ชฉ์ ๋ฐํํ๋ค. ์ฌ์๋ ์๊ฐ๋ ๊ฐ์ ๊ฒฝ์ฐ ๋จผ์ ์ ๋ ฅ๋ ์์ ์ ๋ชฉ์ ๋ฐํํ๋ค. ๋ผ๋ ์กฐ๊ฑด์ ์ ์ํด์ ์ฒ๋ฆฌํด์ฃผ๋ฉด๋ฉ๋๋ค.๐ ์๋กญ๊ฒ ์๊ฒ๋ ๋ด์ฉ
ํ์ด์ฌ์ ๋ฌธ์์ด ๊ด๋ จ ํจ์๋ฅผ ๋ค์ ํ ๋ฒ ๋ฆฌ๋ง์ธ๋ ํ์ต๋๋ค.
์ด์ ๋ณ๊ฐ๋ก ์์ ์์ C๋ B#๊ณผ ๊ฐ๊ณ , F๋ E#๊ณผ ๊ฐ์ ์์ ๋ํ๋ธ๋ค๊ณ ํฉ๋๋ค.
๊ทผ๋ฐ ์กฐ๊ฑด์ "C, C#, D, D#, E, F, F#, G, G#, A, A#, B 12๊ฐ" ๋ผ๊ณ ๋ง ์ ํ์์ด์ ํผ๋์ ์ฃผ๋๋ฐ C๋ B#๊ณผ ๊ฐ๊ณ , F๋ E#์ ๊ฐ๋ค๋ ๊ฑธ ์์์ผ๋ก ๋ณด๊ณ ๋ฌธ์ ๋ฅผ ๋ธ ๊ฑด์ง... ์๋๋ฉด ๋ฌธ์ ๋ฅผ ์๋ชป๋ธ ๊ฑด์ง... ์ข ์ธ์ธํ ๋ถ๋ถ์์ ์ ์ข์ ๋ฌธ์ ๊ฐ๋ค์.