목록전체 글 (35)
성장기록지
문제풀이 예시와 같은 ABCDE가 있다는 뜻은, 그래프 안의 특정 노드에서 5개 이상 연결되어있는 것이 있는지 묻는 것과 같다.따라서 dfs를 통해서 그래프들을 탐험하게 하였고, 그중에 5개의 이상 노드가 연결되어 있을 때 (cnt>=4 일 때)ans를 1로 만들어 1을 출력하게 하였다.from collections import defaultdictimport sysinput = sys.stdin.readlinelimit_number = 15000sys.setrecursionlimit(limit_number)dic = defaultdict(list)n,m = map(int,input().split())for i in range(m): a,b= map(int,input().split()) dic..
Set이란?데이터를 저장하는 추상자료형이다.순서를 보장하지 않고, 데이터의 중복을 허용하지 않는다.데이터 조회속도가 List보다 빠르다. 자바에서의 Set자바에는 Hash Set, Linked Hash Set, Tree Set이 있다. 자주 쓰이는 Hash Set에 대해 중점적으로 살펴보자 Hash Set Hash Table을 사용하기 때문에, 크기 상관없이 데이터 조회가 빠르다.Hash Set은 어떻게 구현되어있나 살펴본다면, Hash Map을 사용하는것을 알 수 있다.따라서 자바에서는 HashMap과 HashSet은 동일하다고 볼 수 있다. Hash Set의 삽입Hash Set에서 데이터를 삽입(add)할때를 보자, 다음과 같이 Key값으로 e를 넣고, Value를 통해 PRESENT라는 객체를 넣..
.문제https://www.acmicpc.net/problem/14888초기 풀이많이 생각할 것 없이, 백트래킹을 통해서 문제를 해결하면 된다 .처음에는 아래와 같이 연산자들을 담는 giho라는 리스트를 활용해서 연산을 진행해주었다.하지만 그러기 위해선 visited 리스트도 활용해야 하였고, visited에 있는지 확인해주느라 시간이 많이걸렸다.n=int(input())nums = list(map(int,input().split()))lst = list(map(int,input().split()))giho = []for i in range(lst[0]): giho.append('+')for i in range(lst[1]): giho.append('-')for i in range(lst[2]..
Hash란?입력 데이터를 고정된 값으로 변환한 값이다. 해시 값이라고도 부른다.해시 값은 해시함수(hash function)에 의해서 얻게 된다.아래의 그림과 같은 방식으로 변환이 된다.이렇게 정수로 변환된 해시는 배열의 인덱스, 위치, 데이터 값을 저장하거나 검색할 때 활용된다. 해시 함수(Hash Function)란임의의 데이터를 고정된 길이의 값으로 리턴해주는 함수위에서 언급했듯이 해시 함수(Hash function)는 입력받은 데이터를 해시 값으로 출력시키는 알고리즘을 말한다. 해시 테이블(Hash Table)란배열과 해시 함수를 사용해서 map을 구현한 자료구조이다.일반적으로 상수시간에 접근하기 때문에 빠르다. 해싱(Hashing)이란?해싱은 해시 함수에서 해시를 출력하고, 해시 테이블에 ..
Data Class란?오직 데이터를 실어담을 수 있는 객체를 만들고 싶을 때 사용한다.일반 클래스와 다르게, 다양한 메소드를 자동으로 생성해주는 클래스이다.구성되는 메소드들은 아래와 같다.toString()hashCode()copy()equals()toString()componentsN()또한 아래와 같은 특징들을 가지고 있다. 기본 생성자에 1개 이상의 파라미터가 있어야 함기본 생성자의 파라미터가 val 또는 var 로 선언해야 함다른 클래스를 상속받을 수 없음 ( sealed 클래스는 상속받을 수 있으며, 인터페이스는 구현할 수 있다.)abstract, open, sealed, inner 등 키워드를 붙일 수 없음자동으로 생성한 메소드를 오버라이딩할 경우, 오버라이드 된 메소드 사용아래에선 하나씩 어..
추상 클래스와 인터페이스의 차이를 설명하세요코틀린이랑 그렇게 친하지 않은 사람은 별 차이가 없다고 생각을 할 수 있다.명확한 차이를 확인하도록 기능적 차이와 개념적 차이를 하나씩 파헤쳐 보도록 하겠다독자는 추상 클래스와 인터페이스가 뭔지는 안다는 가정하에 작성해보겠다.기능적 차이1. 인터페이스는 생성자를 만들 수 없다.인터페이스는 추상클래스와 다르게 생성자를 만들 수 없다.왜 이렇게 구성하였는지의 의도는 개념적 차이에서 보충하겠다.2. 인터페이스는 프로퍼티의 상태 저장이 불가능하다.간단한 예시와 함께 보여드리겠다.추상클래스는 다음과 같이 값을 지정해 둘 수 있다.하지만 인터페이스는 다음과 같이 상태 저장이 불가능하다.왜 인터페이스는 상태 저장이 안되게 만들었을까? 이것도 중요한 내용이니이후에 다룰 개념적..
문제https://www.acmicpc.net/problem/2668풀이아래줄의 숫자가 윗줄과 같을 때, 그래프에 넣어준다고 하면 예시 문제는 다음과 같이 표현할 수 있다.1: [2, 3]2: []3: [1]4: [6]5: [4, 5]6: [7]7: [] 이 그래프를 그림으로 그린다면,아래와 같이 표시할 수 있게 된다. 정답인 1,3,5가 사이클로 돌아가는 것을 알 수 있다. 이 문제는 그래프를 dfs탐색하여, 사이클이 생길때마다 것을 정답 리스트에 보관하여 해결할 수 있는 것이다.풀이 코드from collections import defaultdictn=int(input())dict = defaultdict(list)def dfs(x, visited): visited.add(x) check..
xml을 활용한 개인 프로젝트를 통해 Jetpack Room을 사용해보려고 한다!하지만 유명한 기술이라고 꼭 Room을 사용해야 할까? 다른 대안은 없을까? 하는 마음에사용 근거에 대해 조사하고, 그런 김에 기본적인 사용법도 학습하고자 한다!실제 사용 후 얻는 깨달은 점들도 추후 기록하고자 한다!Jetpack Room이란?Android의 SQLite 데이터베이스를 쉽게 사용할 수 있도록 도와주는 Jetpack 라이브러리이다.SQLite란?SQL(Structured Query Language)을 사용해 데이터를 관리하며,애플리케이션 내에서 데이터베이스 파일을 직접 생성하고 사용할 수 있게하는 라이브러리이다.안드로이드에선 앱을 종료해도 데이터가 남아있게 하고 싶을 때 사용한다.데이터베이스 엔진이다.모든 데이..
Android LifeCycle이란?Android의 앱 구성요소가 생성부터 사용,소멸까지의 일련의 과정을 말한다.대표적으로 Activity, Fragment, Service 등이 생명주기를 가지고있다. Activity LifeCycle생명주기를 살펴보기전에 자주 나오는 용어를 정리해보고자 한다.foreground는 가장 위에 있는 상태(사용자에게 보여지는 상태) 이고,background는 반대로 가장 아래에 있는 상태를 의미한다. 이제 각각의 콜백에 대해서 설명해보자.onCreate()액티비티가 생성될 때 호출된다. 단 한번만 호출되기 때문에, 필요한 변수를 초기화하거나,setOnClickListener , 뷰모델 등 초기화 작업에 적합하다. onStart() foreground가 될때마다 호출이 되어..
문제링크 : https://leetcode.com/problems/reorder-data-in-log-files/문제 해석조건에 맞게 로그를 재정렬해라.1.로그의 가장 앞부분은 식별자로서, 순서에 영향을 끼치지 않는다.2.문자로 구성된 로그가 숫자 로그보다 앞에 오며, 문자 로그는 사전순으로 한다.3.문자가 동일할 경우에는 식별자순으로 한다.4.숫자 로그는 입력 순서대로 한다. 문제 해결문자로 구성된 로그는 코틀린의 sortwith을 활용하여 세부 조건에 맞는 정렬을 하였다. sortwith()이란??Comparator를 지정할 수 있습니다. 즉, Comparator를 변경해 자신이 원하는 조건으로 리스트를 정렬하는 것 입니다. 해결 코드class Solution { fun reorderLogF..