[ 문제 ]
[출제 의도]
- 문자열 처리
[ 문제 풀이 ]
ABC는 ABC#안에 들어있지 않지만, ABCD안에는 들어있습니다. C과 C#은 다르기 때문입니다.
그래서 #의 문자열 처리가 이 문제의 핵심입니다.
저는 C#은 c로 치환하여 C#과 C와의 차이를 두었습니다. 다른 '대문자#' 문자열에도 마찬가지로 적용했습니다.
[ 정답 코드 ]
def solution(m, musicinfos):
answer = ["(None)", 0]
for info in musicinfos:
start, end, title, song = info.split(",")
# 악보 변환
ch = {"C#": "c", "D#": "d", "F#": "f", "G#": "g", "A#": "a", "E#": "e"}
for key in ch.keys():
song = song.replace(key, ch[key])
m = m.replace(key, ch[key])
song_len = len(song)
# 재생길이 확인
play_time = (int(end[:2]) - int(start[:2])) * 60 + (int(end[3:5]) - int(start[3:5]))
# 음악길이 < 재생길이
if song_len < play_time:
result = song * (play_time // song_len) + song[:play_time % song_len]
# 음악길이 => 재생길이
else:
result = song[:play_time]
# 비교 => 1) 재생된 시간이 제일 긴 음악 제목, 2) 먼저 입력된 음악 제목
if "".join(m) in "".join(result) and answer[1] < play_time:
answer[0] = title
answer[1] = play_time
return answer[0]
print(solution("FW", ["13:00,13:01,WORLD,FWDF"]))
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스][2018 KAKAO BLIND RECRUITMENT][Python] 다트 게임 (0) | 2022.05.24 |
---|---|
[프로그래머스][2018 KAKAO BLIND RECRUITMENT][Python] 비밀지도 (0) | 2022.05.03 |
[프로그래머스][2019 KAKAO BLIND RECRUITMENT][Python] 오픈채팅방 (0) | 2022.03.31 |
[프로그래머스][2019 KAKAO BLIND RECRUITMENT][Python] 매칭 점수 (0) | 2022.03.28 |
[프로그래머스][2020 KAKAO BLIND RECRUITMENT][Python] 괄호 변환 (0) | 2022.03.23 |