본문 바로가기

전체 글

기존에 사용하던 잘못된 프래그먼트 관련 사용법을 고쳐보자!! 이번공부를 하며 바보같은 시간을 너무많이 보냈다. 문다빈이 매일 말하는 이창환은 바보야가 진짜 맞는말이다. 어쨋든뭐 평생 징징거릴수도 없고 열심히 정리라도 해야겠다. 오늘의 주제는 프래그먼트이다. 너무 식상할수도 있다 왜 일상적으로 쓰던 프래그먼트가 나올까? 이사건은 솝트 30기 1주차 코드리뷰에서 시작되었다. 문서 라고 나와있는 글의 링크이다 https://developer.android.com/guide/fragments/transactions#add-remove Fragment transactions | Android Developers At runtime, a FragmentManager can add, remove, replace, and perform other actions with frag.. 더보기
백트래킹 개념정리 백트래킹 결론적으로 간단히 이야기하자면 트리 형태로 검색을 해나가며 만약 제약 조건을 통과하지 못한경우 그상태에서 탐색을 종료하고 부모 노드로 돌아가서 다시 다른 자식을 검사하는것이다 -> 크리티컬 맞으면 다검사하겠지만 당연히 종료하고 돌아오는게 있을테니 완전 탐색보다 빠름 Backtracking = Back (뒤) + Tracking (추적) 되추적, 퇴각 검색이라 불림 모든 경우의 수를 탐색하되, 문제가 요구하는 어떠한 제약 조건을 만족하지 않는 경우는 더이상 탐색하지 않고 종료하는 것 결론적으로 현재것을 까보는데 유망성(조건검사)를 검사후, 조건을 만족하지 못하면 부모노드로 돌아가 다른 자식노드를 검사하는것이다. 시간복잡도 -> 일반적으로 상태 공간 트리의 노드수에 비례한다. 그냥 트리가 쭉있다면 .. 더보기
브루트포스 개념정리 Brute Force 브루트포스가 무엇인가? -> 직역하면 짐승같은힘이다 멧돼지 블로그와 잘맞는 알고리즘 인거같다 직역한 그대로 짐승같이 컴퓨팅 파워로 조져서 해결하는것이다. 문제를 해결하기 위해 가능한 모든 경우의수와 그 경우의 결과를 구하는것이다 브루트 포스 알고리즘으로 문제를 푼다면 무조건 정답이 나온다 -> 당연하다 다 구해보니까 ㅋㅋㅋㅋ 한마디로 노가다 이다 ex) 6자리의 암호를 구해보자! 하나씩 죄다 넣어서 어렸을때 자물쇠 풀듯이 푼다 6! 가지수 한마디로 그냥 경우의수 다 가져다 넣어보는것이다 1~50까지 더하기 예시 //1부터 50까지 더한 값 구하기 - Bruteforce sum = 0 for i in range(1, 51): sum += i 🤔 근데 그럼 모든문제를 브루트포스로 풀면되.. 더보기
파이썬 기본 문법 정리 if 문 money = 1000 if money >= 3000: print("돈없다") elif money range(10):0,1,2,3,4,5,6,7,8,9 빠른 입력 input 은 느리다 -> sys 라이브러리의 readline()함수를 써야한다. sys 쓸떄는 한줄 입력받고 rstrip함수를 호출해야한다 -> readline() 으로 입력받고나면 엔터가 줄바꿈기호로 입력된다 이거 없애려고 rstrip 함수 호출해주는거다. import sys //정수하나 입력 a = int(sys.stdin.readline().rstrip()) //map 으로 여러개 int 처리해서 한번에 받기 a,b,c = map(int, sys.stdin.readline().rstrip().split()) //리스트로 담기 l.. 더보기
무한스크롤을 구현해보자!!! 무한스크롤이란게 뭘까? 무한스크롤은 한마디로 pageination(서버쪽에서 이렇게 많이 부르는거 같다),paging 이라고 불리는 기법을 이용하는것이다. 예시를 들자면 인스타에서 피드를 계속 스크롤 해보면 한도끝도 없이 나온다. 근데 이 피드를 최초 액티비티를 켰을때 모두다 가져오는 것일까? 아닐것이다. 데이터는 진짜 끝도없이 서버에 쌓여있을테고 그걸 화면에 표시할 만큼만 들고와서 화면에 표시해주고 특정조건 즉 화면에 표시한 정보들을 사용자가 다 읽었을때 새로운 정보를 가져와서 다시 뿌려줄것이다. 물론 처음에 데이터를 왕창 가져와서 한번만 통신하고 끝낼수도있을것이다. 하지만 많이 가져오는만큼 서버와 통신하는 시간이 길어질테고 그것을 담는 메모리또한 크기때문에 메모리 리소스도 효율적으로 사용하는 방식은 .. 더보기
안드로이드 간단 잡설들 글로 정리하기 애매한것들 보호되어 있는 글입니다. 더보기
문다빈의 추천글 gson의 대체재가 등장했다 보호되어 있는 글입니다. 더보기
데이터 바인딩 표현식 실제 사용하면서 겪은 사례 모음집 -삼항연산자 문자열을 비교하고싶을때 여기서 equals 함수 안쓰고 ==쓰면 이미지 뷰같은거에서는 안먹힘 그냥 다 false로 되어서 GONE처리됨 근데또 view에서는 먹힘 이상함 그니까 그냥 equals 함수쓰자 여기서 또 신박한 방법 type로 지정해서 문자열을 넣어줄수있다. 문자열 을 타입으로 받아서 쓰기!! class HomeMyStatusMode { companion object{ const val REST = "REST" const val DONE = "DONE" const val NONE = "NONE" } } 이렇게 companion object 만들고 xml 에서는 이렇게 type 으로 가져온다 다음 equals에 넣어놓은것처럼 변수처럼 사용하면 문자열이 들어간다. 결론 문자열을 사용할.. 더보기