반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- JPA
- 쿼리테스트사이트
- 쓰기지연저장소
- Oracle
- Stream
- java 로 intellij 플러그인
- ls -lgaf
- plugin local
- error 2002 (hy000): can't connect to local mysql server through socket '/tmp/mysql.sock' (2)
- intellij 플러그인 개발
- Flush
- hibernate 쿼리실행 순서
- 중복컬럼dto매핑
- 쓰기지연sql저장소 쿼리실행순서
- 쿼리실행순서
- 컬럼명중복
- Kafka
- 오라클쿼리테스트사이트
- 로컬에서 플러그인 추가
- Java
- port&adapter architecture
- intellij 플러그인 만들기
- 자바
- dto매핑우선순위
- IntelliJ
- 포트앤어댑터 아키텍처
- group by group by rollup 차이
- 스트림
- sql 테스트 사이트
- 플러그인 로컬 테스트
Archives
- Today
- Total
개린이 탈출기
[코테연습] 동영상 재생기 본문
728x90
반응형
SMALL
https://school.programmers.co.kr/learn/courses/30/lessons/340213
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
우선 앞으로 문제를 풀 때 제한시간을 둬야겠다.
너무 한없이 푸는 것 같아서 약간 시간 낭비가 되는 느낌,,!?
1. String 의 메서드를 다양하게 활용해보자.
나는 시간을 쪼갤 때, 무지성으로 substring을 활용했는데, split을 활용하는 것이 더욱 안전하고 가독성이 좋아지는 코드 같다.
2. 계산 기준으로 초로 잡아서 분까지 한번에 계산이 가능하다는 것! 잊지말기
왜 분따로 초따로 계산했는지 참 바보같다....ㅜ
내가 제출한 정답
class Solution {
public String solution(String video_len, String pos, String op_start, String op_end, String[] commands) {
String answer = "";
int vidMin = Integer.valueOf(video_len.substring(0,2));
int vidSec = Integer.valueOf(video_len.substring(3,5));
int opStMin = Integer.valueOf(op_start.substring(0,2));
int opStSec = Integer.valueOf(op_start.substring(3,5));
int opEdMin =Integer.valueOf(op_end.substring(0,2));
int opEdSec = Integer.valueOf(op_end.substring(3,5));
int ansMin = Integer.valueOf(pos.substring(0,2));
int ansSec = Integer.valueOf(pos.substring(3,5));
for(String command : commands) {
// 오프닝 건너뛰기
if(IsInOp(ansMin, ansSec, opStMin, opStSec, opEdMin, opEdSec)) {
ansMin = opEdMin;
ansSec = opEdSec;
}
switch(command) {
case "next" :
if(nextIsAfterFin(ansMin, ansSec, vidMin, vidSec)) {
ansMin = vidMin;
ansSec = vidSec;
} else {
if(ansSec >= 50) {
ansMin = ansMin + 1;
ansSec = ansSec%10;
} else {
ansSec = ansSec + 10;
}
}
break;
case "prev" :
if(prevIsBeforeSrt(ansMin, ansSec)) {
ansMin = 0;
ansSec = 0;
} else {
if(ansSec < 10) {
ansMin = ansMin -1;
ansSec = ansSec + 50;
} else {
ansSec = ansSec -10;
}
}
break;
}
}
// 오프닝 건너뛰기
if(IsInOp(ansMin, ansSec, opStMin, opStSec, opEdMin, opEdSec)) {
ansMin = opEdMin;
ansSec = opEdSec;
}
return toStr(ansMin) + ":" + toStr(ansSec);
}
private boolean IsInOp(int posMin, int posSec, int opStMin, int opStSec, int opEdMin, int opEdSec) {
if(posMin < opStMin) {
return false;
} else if (posMin == opStMin && posSec < opStSec) {
return false;
} else if (posMin > opEdMin) {
return false;
} else if (posMin == opEdMin && posSec > opEdSec) {
return false;
} else {
return true;
}
}
private boolean nextIsAfterFin(int posMin, int posSec, int finMin, int finSec) {
if(posMin == finMin && posSec + 10 > finSec) {
return true;
}
else if (posSec >= 50 && posMin+1 == finMin && posSec-50 > finSec) {
return true;
}
return false;
}
private boolean prevIsBeforeSrt(int posMin, int posSec) {
if(posMin == 0 && posSec - 10 <= 0) {
return true;
} else if (posSec < 10 && posMin-1 == 0) {
return true;
}
return false;
}
private String toStr (int num) {
if(num <10) {
return "0" + String.valueOf(num);
}
return String.valueOf(num);
}
}
728x90
반응형
LIST
'일상메모' 카테고리의 다른 글
[코테연습] 유연근무제 (이차배열) (0) | 2025.03.24 |
---|---|
[코테연습] 택배 상자 꺼내기 (0) | 2025.03.21 |
[코테연습] (0) | 2025.03.18 |
[코테연습] 2차원 배열 (0) | 2025.03.16 |
[코테 연습] 개행문자, 나머지연산 (0) | 2025.03.14 |