https://leetcode.com/problems/latest-time-by-replacing-hidden-digits/description/
문자열을 다뤄보는 문제였습니다.
📕 풀이방법
📔 풀이과정
각 time의 자리별 ?가 들어올 경우를 따져 적절한 숫자로 치환해줍니다.
즉, xx:xx의 형식에서 x에 해당하는 부분의 index를 0,1,3,4일 때 '?'가 input으로 들어오므로 해당 경우를 확인해줍니다.
1. time[0]이 '?'인 경우
1-1. 그 다음자리인 time[1]이 '4'이상이면서 ?가 아니라면 :왼편 문자열이 "?4" 또는 "?5" ...이므로 time[0]은 1이어야합니다.
1-2. 이외의 경우에는 :왼편 문자열이 "?0", "?1", "?2", "?3" 이 되므로 time[0]이 '2'가 가능합니다.
2. time[1]이 '?'인 경우
time[0]은 가능한 늦은 시각으로 치환되었으니 다음 경우만 확인해주면 됩니다.
2-1. time[0]이 2가 아니면서 ?가 아니면 "1?"형식이므로 time[1]은 '9'가 됩니다.
2-2. 이외의 경우 "2?"형식이므로 '3'이 됩니다.
3. time[2]이 '?'인 경우 무조건 '5'가 됩니다.
4. time[3]이 '?'인 경우 무조건 '9'가 됩니다.
📔 정답 출력 | 반환
치환된 time을 반환합니다.
📕 Code
📔 C++
class Solution {
public:
string maximumTime(string time) {
if(time[0] == '?') {
if(time[1] >= '4' && time[1] != '?') time[0] = '1';
else time[0] = '2';
}
if(time[1] == '?') {
if(time[0] != '2' && time[0] != '?') time[1] = '9';
else time[1] = '3';
}
if(time[3] == '?') time[3] = '5';
if(time[4] == '?') time[4] = '9';
return time;
}
};
📕 Test Case
몇 가지 반례를 직접 작성해 보았습니다.
input
"??:1?"
답
"23:19"
input
"?5:?3"
답
"15:53"
input
"2?:??"
답
"23:59"
*더 나은 내용을 위한 지적, 조언은 언제나 환영합니다.
'Algorithm > String' 카테고리의 다른 글
(C++) - LeetCode (easy) 1869. Longer Contiguous Segments of Ones than Zeros (0) | 2024.09.02 |
---|---|
(C++) - LeetCode (easy) 1768. Merge Strings Alternately (0) | 2024.07.24 |
(C++) - LeetCode (easy) 1704. Determine if String Halves Are Alike (0) | 2024.06.17 |
(C++) - LeetCode (easy) 1694. Reformat Phone Number (0) | 2024.06.13 |
(C++) - LeetCode (easy) 1684. Count the Number of Consistent Strings (0) | 2024.06.09 |