일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 파이썬
- 라이브템플릿
- HTTP
- applicationeventpublisher
- Greedy
- java
- 프로그래머스
- brute force
- BFS
- Python
- 소수
- Spring
- Dijkstra
- codility
- API
- 문자열
- springboot
- beandefinitionstoreexception
- 탐욕법
- javascript
- algorithm
- 최단경로
- 알고리즘
- 2018 KAKAO BLIND RECRUITMENT
- 2981
- 백준
- counting elements
- spring security
- 코딩테스트
- error
Archives
- Today
- Total
Altiora Petamus
방금그곡 본문
🤔생각해보기
처음은 정규식으로 해결했는데 원인 모를 런타임 에러가 발생해서 정규식을 사용하지 않고 해결했다.
사실 "," 로 필요한 문자열을 구분할 수 있기 때문에 굳이 정규식을 쓰지 않아도 되고...
에러 찾는데 시간을 오래 허비해서 아쉽지만, 해결과정의 알고리즘은 간단한 편이다.
"#" 을 그냥 처리할 수는 없으므로 2개의 문자를 하나로 변환해주는 과정을 구현해주는 것이 핵심 아이디어라 할 수 있겠다.
코드
def convert(string):
pitch = {
"C#": "c",
"D#": "d",
"F#": "f",
"G#": "g",
"A#": "a",
}
for i in pitch.keys():
find = string.find(i)
if find >= 0:
string = string.replace(i, pitch[i])
return string
def solution(m, musicinfos):
result = ()
m = convert(m)
for info in musicinfos:
start, end, title, sheet = info.split(",")
start_h, start_m, end_h, end_m = map(int, start.split(':') + end.split(':'))
# 시간 변환
timer = 60 * (end_h - start_h) + (end_m - start_m)
# 악보 변환
sheet = convert(sheet)
sheet = (sheet * timer)[:timer]
if m in sheet:
if not result or timer > result[1]:
result = (title, timer)
if not result:
return "(None)"
return result[0]