본문 바로가기

728x90

전체 글

[Android] 안드로이드 레이아웃(Layout) 이번 글에서는 안드로이드의 레이아웃과 그 속성에 대해 이야기해보고자 한다.먼저 레이아웃의 종류에 대해 알아보자.  위의 사진에서 볼 수 있듯이 레이아웃은 StackLayout, AbsolteLayout,RelativeLayout, GridLayout, ContentView, ScrollView, Frame 총 7개의 종류로 나눌 수 있다.이렇게 나누는 사람도 있고,Linear LayoutRelative LayoutConstraint LayoutTable LayoutFrame LayoutList ViewGrid ViewAbsolute LayoutWebViewScrollView위와 같이  종류를 나누는 사람도 있다.어떻게 종류를 나눠도 상관은 없다.이제 레이아웃의 속성에 대해 알아보자.TextView안드로이.. 더보기
[Android] 안드로이드 매니페스트(Manifest)란? Manifest란?Manifest는 앱의 기본 정보와 시스템 권한, 컴포넌트 등을 정의하는 필수적인 설정 파일이다.앱이 실행될 때 안드로이드 운영체제는 이 파일을 참고하여 앱의 구조와 동작 방식을 이해하고, 필요한 권한과 기능을 적절히 할당한다.주요 속성 : , , , , , ,  package, xmlns:androidallowBackup, icon, label, theme, usesCleartextTrafficname, exported, launchMode, screenOrientation, themename, exported, foregroundServiceTypename, enabled, exportedname (필요한 권한 설정)name, value (앱 설정 값) 태그속성매니페스트 파일의 최상.. 더보기
[Android] 안드로이드 아키텍처(Architecture) 권장사항 안드로이드의 아키텍처에 관해 설명하기 전에 안드로이드에 대해 알아보자.안드로이드란?안드로이드는 구글에서 만든 스마트폰과 태블릿 PC 같은 터치스크린 모바일 장치용으로 디자인된 운영체제이다.수정된 리눅스 커널 버전을 비롯하여 오픈 소스 소프트웨어에 기반을 둔 모바일 운영체제이다. 안드로이드는 아래와 같은 구조를 가진다. 안드로이드는 리눅스 커널 위에서 동작하고, 자바와 코틀린을 통하여 개발한다. 그럼 안드로이드의 권장 아키텍처는 무엇일까?안드로이드는 MVVM 또는 MVI 패턴을 사용하고 Jetpack 라이브러리를 통하여 데이터 바인딩, UI 관리, 의존성 주입 등을 처리하는 것을 권장한다. 위와 같은 구조는 앱의 유지보수성과 확장성을 높이고, 모듈화된 레이어를 통하여 관심사를 분리하고 복잡성을 관리한다. .. 더보기
[백준] 13023번 : ABCDE - C/C++ 문제에서 말하는 친구 관계에 대해 다시 살펴보자.A는 B와 친구다.B는 C와 친구다.C는 D와 친구다.D는 E와 친구다.간단하지만 문제에서 말하고 있는 문장을 도식화하면 위와 같다. 사람의 수를 node라고 볼 수 있고, 친구 관계의 수는 edge라고 볼 수 있다.각각 2,000이 MAX 임을 문제에서 이야기하고 있다.그래프를 보고 위의 그림과 같은 관계가 있는지 파악하는 문제이다. 예제 입력4를 그림으로 그려서 확인해 보자.그림은 이렇게 그릴 수가 있다.이제 친구 관계가 위에서 본 것과 같이 일자로 된 것이 있는지 확인해보자.0번 노드에서 출발하여 2번 노드까지 도착하는 것을 도식화하면 아래와 같다.ABCDE 순서로 일자로 나열되기 때문에 해당 예시는 1을 출력하게 되는 것이다. 13023번은 아래와 .. 더보기
[백준] 16953번 : A → B - C/C++ 문제를 보고 A → B 이렇게 가는건 너무 경우의 수가 많지 않은가?라는 생각을 했다.하지만 반대로 B → A 의 수는 연산의 횟수가 적을 것이라고 생각할 수 있다. 그러니, 우리는 위와 같은 아이디어로 문제를 풀어나갈 수 있다. B → A 를 생각해보자.짝수라면 2로 나누기끝자리가 1이라면 1을 제외시키기1번과 2번에 속하지 않는다면 -1 출력1번과 2번을 코드로 바꾸면 아래처럼 작성할 수 있다.더 깔끔한 코드가 있을 수 있겠지만, 필자는 이렇게까지가 최선이다.while(a  b가 짝수라면 2로 나누기. (가능한 연산이 곱하기 2, 맨 끝자리에 1 추가하기 뿐이니..)if(b % 10 == 1) 이 부분이 끝자리가 1일 때 제거하는 방법. (왜 끝자리가 1이냐면, 1만 추가할 수 있으니까.) 이렇게 핵.. 더보기
[백준] 11719번 : 그대로 출력하기 2 - C/C++ 문제가 간단하다.설명도 엄청 간결하다. 이 문제를 해결하기 위해서 쓰인 개념은getline()이다. getline() 함수를 사용하기 위해서는 string 라이브러리를 사용해야 한다.공백의 문자열이 주어질 수도 있어서 while 문의 조건식으로 getline() 함수를 사용하자.string str;while(getline(cin,str)){ cout  이렇게 코드를 작성하면 된다.근데 입력이 없다면 종료가 되어야하는데,내가 작성한 코드는 control(^)+c 를 눌러야 종료가 된다.이런식으로 작성해서 제출한 코드가 수두룩빽빽인데,다 맞았다고 하니까 이번에도 스리슬쩍.. 내가 처음에 썼던 getline() 함수는 아래와 같다.getline(cin, str);cout 이렇게 되어버리면 공백을 포함해서.. 더보기
[백준] 2839번 : 설탕 배달 - C/C++ 문제 풀이 순서는 다음과 같다.1. n 입력 받기2. 합리적으로 무게 나누기 필자는 말을 잘 못하기 때문에.. 이정도로 정리하겠다. 최소 개수의 설탕 봉지가 필요한 것이기 때문에3킬로그램 짜리와 5킬로그램 짜리 중에서 우리는 "5"를 적극 활용하도록 하자. 만약 입력한 수 n이 15라면, 3킬로그램 짜리를 5개, 5킬로그램 0개 가 필요하므로 총 5개가 필요하다.하지만 5킬로그램만 사용하게 된다면 3킬로그램 짜리 0개, 5킬로그램 3개가 필요하다.그러니 5킬로그램을 필터링에 걸리도록 작성해주자. if(n%5==0){ cnt += n/5; cout  그럼 3킬로그램짜리는 어떻게 처리할까?5로 나누어 떨어지지 않을 때 3씩 빼주면서 처리해주면 된다.n -= 3;cnt++; 우리는 설탕 봉지의 개수를 출력.. 더보기
[Ubuntu/우분투] 맥북에서 22.04 LTS 설치하기 - MacOS 현재 Ubuntu 공식 홈페이지에서 다운로드 가능한 버전은 24.04 버전이다.찾아보면 있긴하다. 눈에 바로 안 보여서 그렇지..필자는 22.04 LTS가 필요하기에 22.04 버전을 설치하고자 한다. Ubuntu는 Mac과 Windows 설치 파일이 다르다.필자는 맥북에 설치하고자 한다.아무리 찾아도 공식 페이지에서는 설치할 수 있는 버전이 24.04 LTS뿐이었다.같이 스터디하는 분들께 여쭤보니, 설치할 수 있는 파일을 주셨다. 아래의 링크를 누르면 바로 설치가 된다. (설치시간 약 5분)https://cdimage.ubuntu.com/releases/22.04.5/release/ubuntu-22.04.5-live-server-arm64.iso 설치가 될 동안 디스크 이미지(.iso)를 다운받자.ht.. 더보기

728x90