728x90
반응형
🔗 문제 링크
https://school.programmers.co.kr/learn/courses/30/lessons/17683
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
반응형
728x90
👩💻 코드
#include <string>
#include <vector>
#include <sstream>
#include <cctype>
#include <iostream>
using namespace std;
string ConvertMelody(string melody) {
string result;
for (int i = 0; i < melody.size(); i++) {
if (i + 1 < melody.size() && melody[i + 1] == '#') {
result += tolower(melody[i]);
i++;
} else {
result += melody[i];
}
}
return result;
}
vector<string> Split(const string& str) {
vector<string> tokens;
string token;
stringstream ss(str);
while (getline(ss, token, ',')) {
tokens.push_back(token);
}
return tokens;
}
int GetMusicTime(const string& info){
int hours = stoi(info.substr(0,2));
int minutes = stoi(info.substr(3,2));
return hours * 60 + minutes;
}
string solution(string m, vector<string> musicinfos) {
string answer = "(None)";
int longestPlayTime = 0;
m = ConvertMelody(m);
for(int i=0; i<musicinfos.size(); i++){
vector<string> v = Split(musicinfos[i]);
int startTime = GetMusicTime(v[0]);
int endTime = GetMusicTime(v[1]);
int totalTime = endTime - startTime;
string music = ConvertMelody(v[3]);
string playedMusic;
for (int j = 0; j < totalTime; j++) {
playedMusic += music[j % music.size()];
}
if (playedMusic.find(m) != string::npos) {
if (totalTime > longestPlayTime) {
longestPlayTime = totalTime;
answer = v[2];
}
}
}
return answer;
}
📝 풀이
ConvertMelody 함수는 #이 들어간 음을 소문자로 치환하는 함수입니다. (C# 👉 c)
Split 함수는 하나의 문자열을 ',' 문자를 기준으로 나누어 vector에 저장하여 return하는 함수입니다.
GetMusicTime 함수는 'HH:MM' 문자열을 분으로 계산하는 함수입니다.
우선 네오가 기억하는 멜로디를 ConvertMelody 함수를 사용하여 치환합니다.
musicinfos를 Split 함수를 이용하여 나눈후 재생시간을 구합니다.
악보 정보도 ConvertMoelody 함수를 사용하여 치환한 후 재생시간에 따라 재구성합니다.
재구성된 악보에 네오가 기억하는 멜로디가 포함되어 있고 라디오에서 재생된 시간이 더 길다면 answer에 음악 제목을 저장합니다.
최종적으로 answer을 return 합니다.
728x90
반응형
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 무인도 여행 (3) | 2024.10.03 |
---|---|
[프로그래머스] 행렬 테두리 회전하기 (1) | 2024.10.03 |
[프로그래머스] 미로 탈출 (0) | 2024.09.30 |
[프로그래머스] 배달 (1) | 2024.09.07 |
[프로그래머스] 숫자 카드 나누기 (0) | 2024.09.06 |