본문 바로가기

전체 글

[Algorithm] 프로그래머스 전화번호 목록(해시) 문제 해당 문제를 풀 때 단순히 각 리스트 원소가 다른 리스트 원소의 앞 부분에 위치하는지, 그 원소로 시작하는 지를 따지려면 반복문을 2번 써야 하는 것. 풀이 문제 해결 아이디어는, "어떤 번호가 다른 번호의 접두어라면, 이 둘을 정렬했을 때 앞 뒤에 위치"하게 된다는 것이다. 즉, ["1235", "123", "12345", "012"] 라는 리스트를 정렬하게 되면 문자열 리스트는 대문자에서 소문자 순서로, 알파벳 순서로 정렬되므로, ["1012", "123", "12348", "1235"] 가 된다. 1. 따라서, i 번째 원소를 i+1번째 원소와 비교하며, 2-1. i + 1번째 원소의 [앞에서부터 ~ i번째 원소의 길이 만큼]이 i번째 원소와 같은지를 확인한다. 2-2. 여기서, i번째 원소가.. 더보기
[Algorithm] 프로그래머스 완주하지 못한 선수(해시) 문제 해당 문제는 해시 알고리즘으로 분류된 문제이며, 겉으로 봤을 땐 단순히 participant 내에 있는 원소 중 completion 에 존재하지 않는 원소가 있다면, 즉 참가자 이름에는 있지만 완주자 리스트에는 없는 이름을 리턴하면 되는 문제이다. 처음 풀이 단순히 문제를 보자마자 리스트 원소 존재 유무에 따라서 다음과 같이 코드를 작성하고 채점을 했더니, 효율성 부분에서 시간초과가 떴다. def solution(participant, completion): answer = '' for i in participant: if i in completion: completion.remove(i) else: answer = i return answer 다른 풀이 1 - 정렬 후 비교 - 리스트 내의 모든 .. 더보기
[DB] 프로그래머스 MySQL 입양 시각 구하기(1) 문제 해당 문제는 프로그래머스 SQL 고득점 Kit 에 있는 GORUP BY 문제이다. 출력 결과 사실 처음에 (SQL 을 다 잊어버린 상태로) 문제를 풀었을 때 아래와 같이 HOUR(DATETIME) 기준으로 GROUP BY 를 하고, HAVING 절에도 조건을 추가하였는데, SELECT HOUR(DATETIME), COUNT(HOUR(DATETIME)) AS COUNT FROM ANIMAL_OUTS GROUP BY HOUR(DATETIME) HAVING 9 더보기
[Android] 안드로이드 스프링부트 서버 통신 아. 날라가서 다시 쓴다. 스프링부트 서버 구축 진행 내용 요약 우선, AWS RDS 인스턴스를 생성하고, MySQL DB를 추가 구성으로 생성한 후 스프링부트 프로젝트에 연결했다. MySQL Workbench에서도 호스트로 접속하여 워크벤치 내에서 user 테이블과 간단한 회원가입을 테스트할 용도로 [identity(PK), name, id, password, passwordCheck] 와 같이 5개의 컬럼을 생성했다. 워크벤치에서 테이블을 생성한 후 스프링부트 프로젝트에서 실행한 결과 생성된 테이블이 반영된 것을 확인할 수 있었다. 스프링부트와 DB 연결을 완료하고, 테스트를 목적으로 간단한 컨트롤러와 연결되는 html 페이지를 생성하여 로컬 상에서 서버를 실행해 보았다. 그후, AWS EC2 서버에.. 더보기
[Android] 안드로이드 Activity 생명주기(Life Cycle) 안드로이드의 4대 컴포넌트 중 [액티비티, 서비스] 는 생명주기를 가지고 있다. - 여기에 더해, 액티비티의 하위 요소라고 할 수 있는 Fragment 역시 생명주기를 가지고 있다. 생명 주기(Life Cycle) 1. 생명주기의 정의 - 사용자가 앱을 탐색하고, 나가고, 돌아가는 등의 여러 상태 변화에 따라서 앱이 알아차릴 수 있도록 제공해주는 Callback 콜백(Call back) 메서드 1. 콜백 메서드의 정의 - 콜백 메서드란, 다른 함수에 인수로 전달되는 함수 - 일종의 이벤트 후에 실행될 것 - 각각의 상태 변화를 알아차릴 수 있도록 하여 상태 변화에 따른 할 일을 자동으로 알려주는 것 - 콜백에 대해 원하는 기능을 구현할 수 있음 2. 콜백 메서드의 목적 - 다른 클래스에서 일부 작업이 완.. 더보기
[Android] 안드로이드 Fragment 생명주기 프래그먼트 생명주기(Fragment Life Cycle) - Fragment 는 Activity 의 특징 일부를 물려받은 독자적인 생명주기를 가지는 UI 컴포넌트 - 그래서, Fragment의 생명주기는 Activity가 활성화된 상태(실행중인 상태)에서 작동 - 프래그먼트에서 필수적으로 구현해야 하는 메서드는, onCreate(), onCreateView(), onPause() 1. onAttach() 1) 액티비티에서 프래그먼트 추가 시 호출 2) 인자로 context를 받아 -> Listener Interface를 Implement한 경우, Context를 통해 가져올 수 있음 2. onCreate() 1) onAttach() 다음으로 호출되는 함수 2) Activity의 onCreate() 함수와.. 더보기
[Android] 안드로이드 브로드캐스트 리시버(Broadcast Receiver) 예제 안드로이드 4대 컴포넌트를 정리하면서 각 컴포넌트 별로 예제를 연습하기 위해서 작성하며, 여기서는 Broadcast Receiver 예제를 다룬다. 대표적인 브로트 캐스트 - 스마트폰에 전원 연결 및 전원 연결 해제 시 Toast Message 출력 - 방송 버튼 클릭 시 '방송' 에 해당하는 Toast Message 출력 AndroidManifest.xml - 브로드캐스트 이벤트를 사용하기 위해서는, AndroidManifest.xml 에 정의 - 전원 연결과 전원 해제 상태에 해당하는 ACTION_POWER_CONNECTED 와 ACTION_POWER_DISCONNECTED 추가 MainActivity.java - MainActivity 는 방송을 하는 발신자 역할을 하며, 브로드캐스트 리시버를 호출.. 더보기
[Android] 안드로이드 4대 컴포넌트 안드로이드의 4대 컴포넌트와 각 컴포넌트 중 생명주기, Life Cycle 을 갖는 컴포넌트의 생명주기 정도는 알고 사용하자. 안드로이드의 4대 컴포넌트(Component) 1. 4대 컴포넌트 정의 - 안드로이드의 4대 컴포넌트는 안드로이드 앱의 필수적인 기본 구성 요소이다. - 각 구성요소는 사용자가 앱에 들어올 수 있는 진입점 - 액티비티(Activity) - 서비스(Service) - Broadcast Receiver - 콘텐츠 제공자(Contents Provider) 로 이루어짐 2. 4대 컴포넌트 특징 1) 각 컴포넌트들은 하나의 독립적인 형태로 존재 2) 각 컴포넌트들은 고유한 기능(각기 뚜렷한 목적) 수행 3) 각 컴포넌트들은 인텐트를 통해 서로 상호작용 4) 각 컴포넌트 별 수명 주기 존재.. 더보기