분류 전체보기 82

앱 개발 프로젝트에서 배운 점(4) : 프래그먼트 간의 데이터 전달

이번 프로젝트에서 제일로 어려웠던 부분이다. 상황은 이렇다. 메인 액티비티 레이아웃에 가이드라인 8 : 2로 LinearLayout 8, Start 이미지 2로 잡았다. LinearLayout에는 weightSum=10으로 하여 텍스트뷰 0.5, 프래그먼트_1_1은 7, 프래그먼트_2_1은 2.5 이렇게 weight를 주어 레이아웃을 형성했다. 메인 액티비티는 시작화면이다. 1_1과 2_1 프래그먼트에서 값을 설정한 뒤, Start 버튼을 눌렀을 때 이 데이터들이 1_2와 2_2 프래그먼트로 이동해야 한다. Start.setOnClick 리스너를 사용하면 정보 전달이 쉽게 가능하나, 이미 Start 온클릭 리스너는 프래그먼트의 변경하는 역할을 메인 액티비티에서 하고 있음. 데이터 전달까지 Start 이미..

기타/AOS, Kotlin 2023.08.15

앱 개발 프로젝트에서 배운 점(3) : TextView 배열의 원소 증감 처리 및 메인 액티비티로 넘겨주기

순서대로 레이아웃에 아래의 id로 저장되어 있다. image0 number0 image1 image2 number1 image3 image4 number2 image5 image6 number3 image7 프래그먼트간의 데이터를 주고받을 때, EditView 4개도 주고받아야 한다. 그래서 레이아웃의 EditVew id 하나하나당 총 4번으로 데이터를 넘겨주려 했는데, 코드의 가독성이 매우 낮아질 거 같아서 찾아보니 Textview 배열에 담아줄 수 있었다. 레이아웃에서 EditText 뷰의 아이디를 통일시켜준다. Textview 배열과 ImageView 배열 초기화 이미지에 따른 텍스트뷰 증감 처리 레이아웃에서 EditText 뷰의 아이디를 통일 Textview 배열과 ImageView 배열 초기화 ..

기타/AOS, Kotlin 2023.08.15

앱 개발 프로젝트에서 배운 점(2) : Spinner 아이템 글자크기 및 폰트, 정렬 다루는 방법

Spinner 아이템 글자크기 및 폰트, 정렬 다루는 방법 스피너란, 이처럼 클릭을 했을 때 여러가지 목록을 뜨게 하는 기능이다. res - values - array.xml 을 만들어 그 안에 태그로 클릭했을 때 뜰 목록들을 지정할 수 있다. 그러고 kt 파일에서 이 array 이름을 호출해주면 된다. 스피너를 클릭했을 때 메소드 2개 오버라이딩 sound_spinner.onItemSelectedListener = object : AdapterView.OnItemSelectedListener { override fun onItemSelected(p0: AdapterView?, p1: View?, p2: Int, p3: Long) { set_music = p2 } override fun onNothing..

기타/AOS, Kotlin 2023.08.14

앱 개발 프로젝트에서 배운 점(1) : 레이아웃, 프래그먼트, 뷰

레이아웃 LinearLayout과 FrameLayout의 차이점 LinearLayout android:orientation 속성을 통해 자식 뷰들을 수직 or 수평 방향으로 순차적으로 배치한다. android:weight 속성을 통해 상대적인 가중치로 공간을 동적으로 할당가능 주로 여러 개의 자식 뷰나 뷰 그룹을 나열할 때 사용됨 이번 프로젝트에서는 LinearLayout으로, 가이드라인에 의해 80%만큼 하나를 만들고, weightSum = 10으로 주어 0.5만큼 텍스트뷰를, 7만큼 프래그먼트를, 2.5만큼 또 다른 프래그먼트를 띄우게 했다. FrameLayout 자식 뷰들을 상위 좌표에 겹치기 배치한다. 즉, 여러 자식 뷰가 추가되면 그 뷰들은 이전 뷰의 위에 배치된다. 단일 뷰나 뷰 그룹을 전체 ..

기타/AOS, Kotlin 2023.08.14

[백준] 13414, 수강신청 (C++, 해시맵)

https://www.acmicpc.net/problem/13414 13414번: 수강신청 입력 데이터는 표준 입력을 사용한다. 입력은 1개의 테스트 데이터로 구성된다. 입력의 첫 번째 줄에는 과목의 수강 가능 인원 K(1 ≤ K ≤ 100,000)와 학생들이 버튼을 클릭한 순서를 기록한 대기목 www.acmicpc.net 이번 주 스터디는 내 차례가 되어 조금 더 깊게 이 문제에 대해 공부해봤고, 이 문제를 풀어봄으로써 C++의 STL에 대해 조금 더 알게되었다. #include #include #include #include #include using namespace std; // sort, unordered_map(해시맵), pair, auto, iterator bool compare(const ..

[코틀린] 코틀린의 '람다'(Lamda) 살펴보기

이번 글을 적기에 앞서 살펴볼 내용은 다음과 같다. 1. 람다 (Lamda) 2. 데이터 클래스 3. Companion Object 4. Object Lamda (람다) 1. 람다 식은 마치 우리가 value처럼 다룰 수 있는 익명 함수이다. + 간결한 함수 표현 방식 2. 함수를 선언하지 않고도, 코드 내에서 함수를 정의하고 사용할 수 있게 해준다. 3. 메소드의 파라미터로 넘겨줄 수 있다. ex) fun maxBy(a:Int) => a : Int를 적은 파라미터 자리에 Fun을 넣을 수 있음. 4. return 값으로도 사용할 수 있다. 람다의 기본 형태 정의 val lamdaName : Type = {argumentList -> codeBody} val sum: (Int, Int) -> Int = ..

기타/AOS, Kotlin 2023.07.29

[코틀린] 자바와 비교하며 기초 문법의 모든 것

자바와 크게 다른점 1. 세미콜론(;)을 쓰지 않는다. 2. 변수 선언 및 함수의 머릿줄이 다르다. -> int a = 10; == var a : Int = 10 -> void swap() || int add()가 아닌, fun swap() : Unit {} || fun add() : Int {} 3. 타입 추론이 가능하다. var a = 10 가능 4. 조건식에 if뿐만이 아닌, when이 추가되었다는 점 5. Nullable, 자바의 NPE가 개선이 되었다는 점 .. 나머지는 코드를 보며 알아보도록 하자 Hello World fun helloworld() : Unit { println("Hello World") } 이렇게 fun을 쓰고 함수 명()를 함. 콜론을 붙이고 Unit을 쓰면, 리턴 값이 없..

기타/AOS, Kotlin 2023.07.29

그래프 응용(최소신장트리), Prim 알고리즘 C언어 구현

지난 시간에 그래프의 기초 개념을 다루었으니 그래프 응용 시간을 가져보겠다. 이번 시간에 할 건 그래프의 최소비용 신장트리의 구성이다. 그전에 우리는 무방향 그래프만 다룰 것이고, 시작에 앞서 용어를 몇 개 짚고 가자 가중치 그래프 : 정점을 잇는 간선에 값이 부여된 그래프이다. 인접행렬을 보면 0과 0이상의 값, 무한대로 3가지의 값의 표현이 있다. 0 : 자기 자신을 가리키는 간선이 없으니 0 0 이상의 값 : 가중치, weight라고 부른다. 무한대 : this 정점에서 해당 정점까지 한 번에 가지 못한다는 걸 의미한다. 지난 시간에는 정점이 간선으로 연결되어 있다는 사실로, 인접행렬을 0과 1로 표현했지만 이제는 간선에 값이 주어지기에 1이 아닌, 그 값을 인접행렬에 넣는다. 신장트리(Spanni..

그래프(Graph)의 개념과 C언어로 구현

그래프란 ? : 정점(Vertex)과 그 정점을 잇는 간선(edge)으로 구성되어 있는 자료구조 무방향 그래프 : 간선의 방향이 없는 그래프 방향 그래프 : 간선의 방향이 있는 그래프 그래프를 표현하는 두 가지 방법 1. 인접행렬 2. 인접리스트 인접행렬 표현법 (무방향과 방향 그래프) 무방향 그래프를 인접행렬로 표현하면 대칭적인 형태를 볼 수 있다. 인접행렬을 작성하는 코드는 다음과 같다. // 그래프의 인접행렬 생성 함수 void createGraph(int arr[][MAX_SIZE], int vertex, int edge) { int start, destination; // 인접행렬 초기화 for (int i = 0; i < vertex; i++) { for (int j = 0; j < verte..