TIL - 2021.05.31

Yuum K·2021년 5월 31일

TIL

목록 보기
3/12
post-thumbnail

🧐오늘 한 일

  • 백준(2217) - 로프 풀이
  • 백준(1062) - 가르침 풀이
  • 비트 마스크 정리하기!
  • 프로젝트(Advist) - 전체 회의

😁 알게 된 점 & 느낀 점

백준(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등이였다!! 물론 나중되면 바뀔 수 있는 순위지만! ㅎㅎ 자랑하고 싶었다!


은근 슬쩍 코드를 던져본다..누군가..보게 되지 않을까..

kangum99/AlGORITHM

프로젝트(Advist)

  • S3에 파일을 올릴때 구분 하기 좋게 폴더명의 규칙을 정하기로 했다.
  • 기획전과 상품에 코치 이미지, 코치 설명등을 어떻게 넣을지 생각해오기로 했다.
  • 어드민 API 만들기를 내가 도와주기로 했다.

😎 다짐

  1. 알고리즘을 풀때 오타에 주의하자.. 시간초과라고 해서 오타가 없는 것은 아니다..
  2. 오늘의 이 짜릿함을 잊지말고 알고리즘 하다가 힘이 떨어지면 이 포스팅을 보러 와야 겠다~
  3. 프로젝트가 막바지에 이르는 데 아무리 봐도 내 코드는 dirty하다.. 리팩토링을 꼭 해보자 (디자인 패턴, 클린코드, 깃허브 커밋 컨벤션을 찾아보자) ⇒ 누군가에게 코드 리뷰를 받고 까이고 싶을지경...
profile
후회 하지 않기 위해 노력하는 개발자

0개의 댓글