분류 전체보기 83

(코틀린 kotlin) BMI계산기

목차 인트로 (완성앱 & 구현 기능 소개) Linearlayout 이용하여 화면 그리기 화면을 이쁘게 꾸며보기 키와 몸무게 입력 화면 기능 구현하기 (1) 키와 몸무게 입력 화면 기능 구현하기 (2) 결과화면 기능 구현하기 아웃트로 (정리) 이 챕터를 통해 배우는 것 Layout 을 그리는 법 LinearLayout 사용하기 TextView 의 속성들과 사용하는 법 EditText 의 속성들과 사용하는 법 Button 사용하는 법 Layout 과 Kotlin 코드를 함께 사용하기 버그 수정해보기 Activity 에 대해 알아보기 Kotlin 문법 when 분기문 람다함수 BMI 계산하기 공식 = 몸무게(kg) / (키 (m) * 키 (m)) 18.5 이하면 저체중 18.5 ~ 23 은 정상체중 23 ~ ..

(Android) Handler란 무엇일까?

안드로이드 개발을 하다보면 Main Thread에서 UI작업을 해야 한다는 것은 알고 있을 것이다. 그렇다면 왜?? 굳이 Main Thread에서 UI를 작업해야 하나 생각하고 찾아보았다. 위와 같이 Main Thread와 Worker Thread에서 textview의 setText에 접근 한다고 해야한다, textView는 여기서 어느 Thread의 값을 적용시켜야 하는지 혼란에 빠지게 된다. 그래서 해결할 수 있도록 생각된 방법이 handler이다. worker Thread는 hander를 통해 main Thread로 sendMessage를 통해 전달을 해준다. 그리고 수신을 받은 Main Thread에서 유연하게 작업을 해주는 것이다. 가끔씩 앱을 구현하다 보면은 1초 씩 딜레이를 시켜야 하는 상황..

(코틀린 kotlin) LayoutInflater란 무엇일까

Android LayoutInflater LayoutInflater 란? 안드로이드에서 View를 만드는 방법 중 하나 xml에 정의된 Resource 를 View 객체로 반환해 주는 역할을 한다. xml 에 미리 정해둔 틀을 실제 메모리에 올려주는 역할을 한다. Inflate는 부풀리다라는 뜻으로 만들어둔 반죽을 빵처럼 부풀려 실제 식탁에 올려주는 역할로 묘사할 수 있다. Activity 를 만들면 onCreate 에 추가되는 setContentView 메서드와 유사한 역할 xml 레이아웃 파일에 대한 뷰를 생성할 때 LayoutInflater 를 이용해야 한다. LayoutInflater 객체의 inflate 메서드를 이용해 새로운 뷰를 생성할 수 있다. inflate(xml파일, 만든 뷰를 넣을 부..

CS 공부) 객체 지향 프로그래밍이란 무엇인가

Object Oriented Programming (객체 지향 프로그래밍) 객체 지향 프로그래밍 이전의 프로그래밍 패러다임을 살펴보면, 중심이 컴퓨터에 있었다. 컴퓨터가 사고하는대로 프로그래밍을 하는 것이다. 하지만 객체지향 프로그래밍이란 인간 중심적 프로그래밍 패러다임이라고 할 수 있다. 즉, 현실 세계를 프로그래밍으로 옮겨와 프로그래밍하는 것을 말한다. 현실 세계의 사물들을 객체라고 보고 그 객체로부터 개발하고자 하는 애플리케이션에 필요한 특징들을 뽑아와 프로그래밍 하는 것이다. 이것을 추상화라한다. OOP 로 코드를 작성하면 이미 작성한 코드에 대한 재사용성이 높다. 자주 사용되는 로직을 라이브러리로 만들어두면 계속해서 사용할 수 있으며 그 신뢰성을 확보 할 수 있다. 또한 라이브러리를 각종 예외상..

CS 2022.01.08

코딩테스트 시간복잡도 및 유형 정리

들어가기 알고리즘 문제를 풀다 보면 시간복잡도를 생각해야 하는 경우가 종종 생긴다. 특히 codility는 문제마다 시간복잡도 기준이 있어서, 기준을 넘기지 못하면 문제를 풀어도 score가 50 이하로 나오는 경우가 많다. 찾아보니 파이썬 주요 함수, 메소드의 시간복잡도를 정리한 페이지가 있었다. (Complexity of Python Operations) 자주 사용하는 것들을 이곳에 정리하고 종종 참고하려고 한다. list OperationExampleBig-ONotes Index l[i] O(1) Store l[i] = 0 O(1) Length len(l) O(1) Append l.append(5) O(1) Pop l.pop() O(1) l.pop(-1) 과 동일 Clear l.clear() O(1..

알고리즘 2021.12.30

(그리디알고리즘) 곱하기혹은더하기 파이썬 풀이

출처:: 코딩테스트 교재 P313 분류:: 그리디알고리즘 1. 문제 이해 및 해결과정 - 입력 조건 : 첫째 줄에 여러 개의 숫자로 구성된 하나의 문자열 S가 주어집니다. (1 210 2. 풀이방법 N = list(map(str, input().strip())) result = 0 while(N): A = int(N.pop(0)) #0 if A == 0: continue if result == 0 and A != 0: result += A continue if result * A > result + A: result = result * A else: result = result + A print(result) 해설 ) 아이디어: 숫자를 사용자로부터 입력받아 리스트로 변경한다. 초기 result 값을 0으..

알고리즘/GREEDY 2021.12.30

(코틀린 kotlin) 로또번호생성기 앱

목표 : 총 6개의 숫자를 랜덤으로 만들 수 있는 로또 번호 생성기 앱을 제작 1~10은 노란색 10~20은 파란색 등 숫자별로 Background Color값이 달라야함, 초기화 버튼시 만든 로또 번호는 다 지워짐 번호를 수동으로 추가할 수 있음, 먼저 레이아웃을 그리기 위해 ContraintLayout을 만들어 준다. NumberPicker를 그려주어 1부터 45까지 선택이 가능한 코드 작성 val numberpick = findviewbyId(R.id.number_pick) numberpick.minValue = 0 numberpick.maxValue = 45 numberpicker Layout의 위치 app:layout_constraintTop_toTopOf="parent" ap..

(코틀린 kotlin) Mutable과 Imutable 유형 정리

Collection(콜렉션)은 대부분의 프로그래밍 언어에 있는 자료구조입니다. 자바의 List, Map, Set 등을 Collection이라고 합니다. Collection은 Generic으로 구현이 되어 다양한 타입과 함께 사용될 수 있습니다. 코틀린의 Collection은 기본적으로 Mutable(변할 수 없는)과 Immutable(불변의)을 별개로 지원합니다. Mutable로 생성하면 추가, 삭제가 가능하지만, Immutable로 생성하면 수정이 안됩니다. 컬렉션에는 일반적으로 동일한 유형의 여러 개체 (이 숫자는 0 일 수도 있음)가 포함됩니다. 컬렉션의 개체를 elements 또는 items 이라고 합니다 List: index로 elements에 접근가능한 정렬 된 컬렉션 입니다. 순서가 중요하며..

(최단경로알고리즘) 전보, 다익스트라(PYTHON)

출처:: 코딩테스트 교재 최단경로알고리즘 분류:: 다익스트라알고리즘 1. 문제 이해 및 해결과정 입력 3 2 1 1 2 4 1 3 2 출력 2 4 첫 째줄에 도시의개수 N 통로의 개수 M 메시지를 보내고자 하는 도시 C가 있다. 둘째 줄 부터 M+1 번째 줄에 걸쳐서 통로에 대한 정보 X Y Z가 주어진다. 이는 특정 도시 X에서 다른 특정 도시 Y로 이어지는 통로가 있으며 메시지가 전달되는 시간이 Z라는 의미이다. 첫째줄 도시 C에서 보낸 메시지를 받는 도시의 총개수와 총 걸리는 시간을 공백으로 구분하여 출력한다. 2. 풀이방법 import sys from queue import PriorityQueue N, M, C = map(int , input().split()) dic_arr = {} weigh..

알고리즘/GRAPH 2021.12.23

미래 도시(PS)

출처:: M기업 코딩 테스트 분류:: 플루이드 워셜 알고리즘 1. 문제 이해 및 해결과정 - N의 범위가 100이하로 매우 한정적이므로 플로이드 와셜알고리즘 이용 2. 풀이방법 #미래도시 import sys from queue import PriorityQueue INF = int(1e9) #10억 #노드의 개수 및 간선의 개수를 입력받기 n,m=map(int,input().split()) graph = [[INF]*(n) for _ in range(n)] for i in range(m): X, Y = map(int, input().split()) graph[X-1][Y-1] = 1 graph[Y-1][X-1] = 1 #비용은 0으로 초기화 for i in range(n): graph[i][i] = 0 ..

알고리즘/GRAPH 2021.12.20