백준(2217)-로프 ⇒ Greedy
- 예전에는 실버4도 버거워했는 데 이제는 30분 안에 풀 수 있게 되어서 다행이라고 생각한다. (시간을 더 줄여보자!)
백준(1062)-가르침 ⇒ BitMask, DFS, BackTracking
- 시간 초과 때문에 굉장히 고민을 많이 한 문제였다. 분명히 겹치는 부분도 다 예외 처리를 했고, 비트마스크도 썼고, 조합에 백트래킹 조건까지 완벽했다고 생각 했다..
⇒ [실수]하지만 엄청난 착각이였다. 조합의 반복문 안에서 오타를 냈던것! 그래서 무한루프를 돌고 있었는데 간단한 테스트 케이스만 해봤던 난.... 다른 곳에서 삽질 했다..
⇒ [실수로 인해 얻어 낸 것!] 비트 마스크를 이용해서 for문 하나를 없앴다.(문자열을 char하나씩 돌아가면서 체크 해야 하는 부분을 문자열 자체도 비트 마스크로 만들어서 for문 하나를 없애 버린것!) → 실제로 300ms 에서 168ms로 줄었다!원소의 개수가 적을 때는 굉장히 빠른 비트 마스크 때문!
//기존 코드
for(int i = 0; i < N; i++) {
String s = word[i];
for(int j = 0; j < s.length(); j++) {
// 가르친 글자가 하나라도 없을 때 - 백트래킹
if(!learnedChar(s.charAt(j)-'a', ch)) {
count--;
break;
}
}
}
//개선한 코드
for(int i = 0; i < N; i++) {
// 가르친 글자가 하나라도 없을 때 - 백트래킹
// 포함되었을 때 == 합집합이 ch와 같을때!
if((word[i] | ch) != ch) {
count--;
}
}
백준 제출을 JAVA로 한 사람들 중 시간은 2등으로 빨랐다! 메모리는 1등이였다!! 물론 나중되면 바뀔 수 있는 순위지만! ㅎㅎ 자랑하고 싶었다!
은근 슬쩍 코드를 던져본다..누군가..보게 되지 않을까..
프로젝트(Advist)
- S3에 파일을 올릴때 구분 하기 좋게 폴더명의 규칙을 정하기로 했다.
- 기획전과 상품에 코치 이미지, 코치 설명등을 어떻게 넣을지 생각해오기로 했다.
- 어드민 API 만들기를 내가 도와주기로 했다.