π λ¬Έμ λ°λ‘κ°κΈ°
https://school.programmers.co.kr/learn/courses/30/lessons/340213?language=java
νλ‘κ·Έλλ¨Έμ€
SWκ°λ°μλ₯Ό μν νκ°, κ΅μ‘μ Total Solutionμ μ 곡νλ κ°λ°μ μ±μ₯μ μν λ² μ΄μ€μΊ ν
programmers.co.kr
π λ¬Έμ μμ½

λμμ μ¬μ±κΈ°λ μλμ 3κ°μ§ κΈ°λ₯μ μ§μνλ€.
1οΈβ£ 10μ΄ μ μΌλ‘ μ΄λ (prev)
- νμ¬ μμΉμμ 10μ΄ μ΄μ μΌλ‘ μ΄λνλ€.
- λ¨, νμ¬ μμΉκ° 10μ΄ λ―Έλ§μΈ κ²½μ°, μμμ μ²μ μμΉ(0λΆ 0μ΄)λ‘ μ΄λνλ€.
2οΈβ£ 10μ΄ νλ‘ μ΄λ (next)
- νμ¬ μμΉμμ 10μ΄ μ΄νλ‘ μ΄λνλ€.
- λ¨, μμ μ’ λ£ μκ°μ μ΄κ³Όνλ κ²½μ°, μμ λμΌλ‘ μ΄λνλ€.
3οΈβ£ μ€νλ μλ 건λλ°κΈ°
- νμ¬ μμΉκ° μ€νλ λ²μ (op_start ~ op_end) μ¬μ΄λΌλ©΄, μλμΌλ‘ μ€νλ μ’ λ£ μμ (op_end)μΌλ‘ μ΄λνλ€.
μ λ ₯μ μλμ κ°λ€.
- video_len : μμ μ 체 κΈΈμ΄ ("mm:ss" νμ)
- pos : κΈ°λ₯ μν μ νμ¬ μμΉ ("mm:ss" νμ)
- op_start, op_end : μ€νλ μμ / μ€νλ μ’ λ£ μμ ("mm:ss" νμ)
- commands : μ¬μ©μκ° μ λ ₯ν λͺ λ Ή λ°°μ΄ (ex. ["prev", "next", "next"])
π¨ μ£Όμμ¬ν
μ κ° μ²μ λ¬Έμ λ₯Ό νμμ λμλ "μ€νλ 건λλ°κΈ°" κΈ°λ₯μ΄ λ°λ‘ μλ건 μ€ μκ³ ,
"prev", "next" μΈμ λͺ λ Ήμ΄λ μ€νλ 건λλ°κΈ°λ‘ μ²λ¦¬νλ€κ³ λ‘μ§μ μ§°λ€κ° νμ°Έμ λλ²κΉ νμμ΅λλ€ ..π
μ€μ λ‘λ commandsλ₯Ό μ²λ¦¬νλ€κ° μ€νλ ꡬκ°μ μμΉνκ² λλ©΄,
λ³λμ λͺ λ Ή μμ΄ μλμΌλ‘ op_endλ‘ μ΄λν΄μ£Όμ΄μΌ νλ μ΄ λΆλΆμ μ£Όμν΄μ£ΌμΈμ !
μ²μ μμν λλ, λͺ λ Ήμ μνν μ΄νμλ νμ μλμΌλ‘ μ μ©λμ΄μΌ ν©λλ€ !!
π‘ μμ΄λμ΄
1οΈβ£ β± μκ° λ¬Έμμ΄μ μ΄ λ¨μλ‘ λ³ννκΈ°
int toSecond(String time){
String[] sub_time = time.split(":");
int min = Integer.parseInt(sub_time[0]);
int sec = Integer.parseInt(sub_time[1]);
return min * 60 + sec;
}
λͺ¨λ μκ°μ κ΄ν μ 보λ€μ΄ "mm:ss" νμμΌλ‘ μ£Όμ΄μ§κΈ° λλ¬Έμ κ³μν΄μ μκ° λ³νμ ν΄μ£Όμ΄μΌ λλλ°
κ·Έ λλ§λ€ ν΄μ£ΌκΈ°μ λ무 λ²κ±°λ‘μΈ κ² κ°μ λ³λμ λ©μλλ‘ λΆλ¦¬ν΄λμλ€.
mm:ss νμμ λ¬Έμμ΄μ λ°μΌλ©΄, :μ κΈ°μ€μΌλ‘ λΆκ³Ό μ΄λ‘ μͺΌκ° ν,
κ³μ°μ μΌκ΄μ±μ μν΄ λͺ¨λ μκ°μ μ΄ λ¨μλ‘ ν΅μΌνλ€.
ex) "04:05" → 4 * 60 + 5 = 245μ΄
2οΈβ£ π μ΄λ₯Ό λ€μ "mm:ss" νμμΌλ‘ λ³ννκΈ°
String toTimeString(int time){
int min = time / 60;
int sec = time % 60;
return String.format("%02d:%02d", min, sec);
}
μ΅μ’ κ²°κ³Όλ λ λ€μ "mm:ss" ννλ‘ λ°νν΄μ£Όμ΄μΌ λκΈ° λλ¬Έμ
μ λν κ·Έλ₯ λ³λμ λ©μλλ‘ λ³νκΈ°λ₯Ό λ§λ€μ΄λμλ€.
μ΄λ, String.format("%02d:%02d", ......)λ₯Ό μ¬μ©ν΄μ νμ λ μ리λ₯Ό μ μ§νκ² μ²λ¦¬νλ€.
λ°λΌμ μ΅μ’ κ²°κ³Όκ° 4λΆ 5μ΄μ΄λ©΄ "04:05"λ‘ ν¬λ§·λλ€.
3οΈβ£ π μ€νλ 체ν¬
commandsλ₯Ό μν μμνκΈ° μ μ΄λ , μννλ μ€μ΄λ , μνν νλ
νμ μ€νλ μμΉμ κ±Έλ¦°λ€λ©΄ μλμΌλ‘ 건λλ°κΈ° ν΄μ£Όμ΄μΌ νκΈ° λλ¬Έμ
μλμ κ°μ΄ κΈ°λ₯ μν λ‘μ§μ μ§μ£Όμλ€.
if(cur >= opStart && cur <= opEnd){
cur = opEnd;
}
for(int i = 0; i < n; i++){
if(commands[i].equals("prev")){
cur = Math.max(0, cur - 10);
}
else if(commands[i].equals("next")){
cur = Math.min(total, cur + 10);
}
if(cur >= opStart && cur <= opEnd){
cur = opEnd;
}
}
μ΄μ²λΌ κΈ°λ₯ μνμ μμνκΈ° μ μ ν λ² μ€νλμΈμ§ 체ν¬λ₯Ό ν΄μ£Όκ³ ,
κΈ°λ₯ μνμ νλ μ€κ°μ€κ°μλ κ³μν΄μ μ€νλ λΆλΆμ μμΉνλμ§ μ²΄ν¬λ₯Ό ν΄μ£Όμλ€.
4οΈβ£ π λͺ λ Ή μ²λ¦¬
μμ 3λ²μμ 첨λΆν μ½λμ κ°μ΄
prev λͺ λ Ήμ΄λ 10μ΄ μ΄μ μΌλ‘ μ΄λνλ,
10μ΄ μ μ΄ 0λ³΄λ€ μμ κ°μ΄λΌλ©΄ κ·Έλ₯ 0λΆ 0μ΄λ‘ μ΄λνλ κΈ°λ₯μ΄κΈ° λλ¬Έμ
0κ³Ό νμ¬ μμΉμμ 10μ λΉΌμ€ κ° μ€ λ ν° κ°μ μ ννλλ‘ νμλ€.
λ§μ°¬κ°μ§λ‘ next λͺ λ Ήμ΄λ 10μ΄ μ΄νλ‘ μ΄λνλ,
10μ΄ νκ° μμ μ 체 κΈΈμ΄λ³΄λ€ ν° κ°μ΄λΌλ©΄ κ·Έλ₯ μμμ λ§μ§λ§ μμΉλ‘ μ΄λνλλ‘ νμ¬
μμμ λ§μ§λ§ μμΉμ νμ¬ μμΉμ 10μ λν κ° μ€ λ μμ κ°μ μ ννλλ‘ νμλ€.
π©π»π» μ΅μ’ μ½λ
class Solution {
int toSecond(String time){
String[] sub_time = time.split(":");
int min = Integer.parseInt(sub_time[0]);
int sec = Integer.parseInt(sub_time[1]);
return min * 60 + sec;
}
String toTimeString(int time){
int min = time / 60;
int sec = time % 60;
return String.format("%02d:%02d", min, sec);
}
public String solution(String video_len, String pos, String op_start, String op_end, String[] commands) {
int total = toSecond(video_len);
int cur = toSecond(pos);
int opStart = toSecond(op_start);
int opEnd = toSecond(op_end);
int n = commands.length;
if(cur >= opStart && cur <= opEnd){
cur = opEnd;
}
for(int i = 0; i < n; i++){
if(commands[i].equals("prev")){
cur = Math.max(0, cur - 10);
}
else if(commands[i].equals("next")){
cur = Math.min(total, cur + 10);
}
if(cur >= opStart && cur <= opEnd){
cur = opEnd;
}
}
return toTimeString(cur);
}
}
π μκ° λ³΅μ‘λ
for (int i = 0; i < n; i++) { // commands λͺ
λ Ή μνμ μν λ°λ³΅
...
}
μμ λΆλΆμμλ§ μ νν nλ² λ°λ³΅μ μννκΈ° λλ¬Έμ μκ° λ³΅μ‘λλ O(n)μ΄λ€.
'π» μ½ν > π JAVA' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
| [νλ‘κ·Έλλ¨Έμ€/JAVA] 곡μ (1) | 2025.07.23 |
|---|---|
| [νλ‘κ·Έλλ¨Έμ€/JAVA] μ§ν μ κΈ° (0) | 2025.07.23 |
| [νλ‘κ·Έλλ¨Έμ€/JAVA] μ μ°κ·Όλ¬΄μ (3) | 2025.07.20 |
| [νλ‘κ·Έλλ¨Έμ€/JAVA] λ°ννλ©΄ μ 리 (2) | 2025.05.28 |
| [νλ‘κ·Έλλ¨Έμ€/JAVA] μ격μμ€ν (0) | 2025.05.28 |